簡體   English   中英

如何將Subversion用於非編譯語言?

[英]How to use Subversion for non-compiled language?

我想將Subversion與基於腳本的開發系統一起使用,並且想知道對於我通常的情況(C#/ .NET)應該做些什么。

正常的日常更新/提交周期將正常工作,因為將更改跟蹤和修訂的比較。 在哪里我想要一些建議是圍繞處理部署。

使用此腳本系統,不涉及明確的構建步驟 - 相反,部署涉及將選定的腳本直接上載到主機應用程序中。

對腳本的更改不一定包含在下一個版本中 - 它們可能會在此之后發布,或者之后發布。

在理想的世界中,我希望能夠將腳本分配到給定的版本中,比如“2009年9月”版本,一旦經過測試,然后使用單個命令拉出該版本的所有腳本。

更新

據我所知,標簽和變更列表都不是答案。

ChangeLists不是持久的(在存儲庫中不存在),我需要一個允許稍后審查的解決方案。

標簽實際上與分支相同 - 它們默認包含所有文件,您只需選擇哪些修訂即可。

我希望有一種方法可以從一個空分支開始,根據需要可以在其中放置特定的文件修訂版。

更新2

兩個例子,展示了我如何通過其他工具中的特性來滿足這種情況。 請注意,我根本不想嘗試推廣這些工具,因為我想使用subversion,我只是想弄清楚如何。

使用QVCS ,我可以通過將標簽應用於文件的特定修訂版來實現我想要的結果。 該標簽將保留在原位,附加到該文件的修訂版。 在任何時候,我都可以在一個空目錄中進行干凈的檢查,並指定只應復制具有指定標簽的文件。

同樣,使用StarTeam ,我可以將標簽應用於文件修訂版,並僅檢出具有該標簽的文件。

您可以使用Subversion分支管理“未來”版本。 當您進行將來發布的更改時,請將其提交到相應的分支。 當需要將所有這些未來功能引入主干時,請合並分支。

這與使用Subversion和編譯語言的工作流程實際上沒有什么不同,或者實際上用於任何其他目的。

有關更多信息,請參閱Subversion書籍的Common Branching Patterns部分。 特別是,“功能分支”部分聽起來最適合您的情況。

“在理想的世界中,我希望能夠將腳本分配到給定的版本中,比如”2009年9月“版本,一旦經過測試,然后用一個命令拉出該版本的所有腳本。 “

這正是標簽的設計目標。

一個解決辦法是使用開始一個新的分支svn mkdir (而不是svn copy ),然后有選擇地通過復制方式從你的主分支所需的文件svn copy

我看到了問題 - 這與SVN無關。 您希望將某些文件存儲在發布分支中,而不是其他文件中。 因此要么分支整個發布目錄,要么刪除那些你不希望在那里顯示的文件; 或創建一個新的空目錄並只復制您想要的文件。

就這么簡單。 您不需要更改列表或標簽或任何復雜的內容,並且沒有任何subversion系統能夠猜出您想要的文件。 就個人而言,我會執行分支+刪除選項,因為如果您確定要恢復文件,可以在以后撤消刪除。

我相信使用svn 1.6你可以指出個別文件的外部。 因此,如果需要,可以創建一個空樹結構並在其上定義一組外部結構,從而將所需的文件引入結構中。 這會給你一種分支的“實時視圖”。

您也許可以直接從主干引用文件版本 - 或者您可以分層您的方法並使用發布分支合並特定的修訂版,然后在“實時視圖”的外部引用該發布分支。 這樣,您通過合並修訂版本來釋放功能 - 保持正常的修訂版本控制和合並歷史記錄,然后服務器上的svn-update將這些文件拉入實時結構。

缺點是很難切換到不同的分支(比如舊標簽,因為新版本中存在問題) - 您必須手動編輯所有外部定義。 如果它們都在同一個目錄中,這可能不是問題,但如果你不得不尋找它們可能會很痛苦。

有關文件外部的一些信息可以在svn 1.6發行說明中找到

聽起來您正在尋找有關特定腳本的元數據。 因此,一種選擇是將腳本存儲為單獨的文件,並使用svn屬性 Svn屬性允許您存儲與文件關聯的鍵值對。

例如,要鏡像“標簽”示例,可以為您決定包含在特定版本中的每個文件創建一個屬性。 在這種情況下,請創建值為“true”的“September 2009”屬性。

然后,您可以在生成部署包時僅選擇具有“September 2009”屬性的文件。

當您希望隨時跟蹤存儲庫的更改並生成差異以查看這些更改是什么時,使用標記和分支很有用 - 但它是整個存儲庫的快照...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM