2012-07-13 108 views
1

我想知道一些谷歌無法告訴我有關SVN的東西。SVN分支和工作副本

我們在我們的工作中使用SVN和推薦的trunk/branches/tags結構。

我想知道,是否有必要將trunk文件夾切換到分支/我的分支文件夾,或者我可以在分支/我的分支文件夾中工作並提交這些更改? 我在這裏說的物理文件夾和正確的位置進行更改。

我們不是真的需要去創建一個分支到現在爲止,並希望得到它吧:)

謝謝!

+0

嗯。你看過書嗎? :)你的問題在SVNBook中有介紹。我強烈建議你檢查下面描述分支背後的概念的文章:http://svnbook.red-bean.com/en/1.7/svn.branchmerge.whatis.html – bahrep 2012-07-13 13:31:01

+0

我完全理解分支的概念,但是我我對自己的工作副本感興趣。 – 2012-07-16 02:28:25

回答

0

從中繼線創建分支。在您的分支中工作,儘可能多地提交您需要的提交。完成後,將任何新的提交從trunk中合併到分支,解決所有衝突。一旦所有衝突(如果有的話)都得到解決,並且您已經測試了代碼,則可以將分支合併到中繼。

+0

特別是在物理工作位置,在分支文件夾(分支/ my_branch /文件),我可以在此工作,因爲我通常會幹的? – 2012-07-13 12:00:37

+0

對你的評論的回答是肯定的。 SVN並不關心文件夾和名稱。它們只是建議,在「後備箱」或「分支」中沒有特別的含義。他們真的可以是「盒子」和「小提琴」 – userfuser 2016-07-28 11:38:52

0

切換不是一個好主意。基本上,該命令用於重新定位項目。

如果你有一個分支,那麼這個分支有它自己的生命。你的主幹可能在承諾功能方面遙遙領先,或者它可能會成爲其他方式 - 某些分支在某些時候會比你的主幹提前。如果你在你提到的上下文中使用switch命令,你最終會陷入一片混亂,最終必須得到一個乾淨的結賬。

如果您使用不同的分支機構,您需要了解並接受每個分支機構可以被視爲單獨的中繼線(基於另一個分支機構)。因此,對於你正在使用的不同分支有獨立的清理結賬

0

我認爲最好的第一步是將Subversion的命名和概念與你自己的匹配,否則我認爲你會把自己束縛在節點上。例如「將中繼線切換到分支」沒有意義。我懷疑你的意思實際上是:「切換當前包含中繼線代碼的工作副本,以便它包含分支代碼」

存儲庫存儲主幹和任何已創建分支的當前狀態。通常情況下,如果您希望返回修復較早發行版中的錯誤(例如對於1.0.1版本),則在您爲2.0版主幹做了更多實質性更改時將創建一個分支, 1.0.1。

當你對某個項目簽出無論從主幹或分支工作副本。您提交的任何提交將最終在您檢查出的主幹或分支上。如果您需要在1.0.1分支上工作,您有兩種選擇:

  • 檢出此分支的新工作副本。任何提交被推送到該分支上
  • 切換您正在使用的主幹的工作副本,以便它現在遵循分支而不是主幹。現在任何提交都會被推送到正確的分支上。

你採取將取決於許多因素,這兩種方法之一:

  • 你有沒有在你還沒有提交工作副本的變化。如果是這樣,那麼最簡單的事情就是檢查一個新的工作副本。如果你想切換,那麼你可能會失去它們,所以要麼提交,要麼創建一個補丁,並把它放在一邊
  • 創建一個新的工作副本是否昂貴?例如,它可能是一個非常緩慢的網絡,巨大的源代碼樹,或需要花費很多時間來構建。如果是這樣,那麼你可能更喜歡切換
  • 你的項目是否依賴於硬編碼路徑?如果您的構建腳本假定所有內容都在c:\source那麼這意味着您只能有一個工作副本,並且您必須使用切換。

爲簡單起見,雖然我會建議爲分支創建一個新的工作副本。