2009-05-18 86 views
21

必須在功能分支合併(重新集成)回中繼後才能刪除功能分支?在重新合併到中繼後使用顛覆功能分支安全嗎?

我更喜歡不斷地從我的功能分支中來回變換 - 我相信這會將衝突降到最低。但我明白,一旦你使用重新合併到主幹,應該刪除一個功能分支。

是這樣嗎?爲什麼?我能做些什麼來繞過這個?

更新 我問的是來自該工具的技術問題,而不是「方法問題」。我打算在合併後繼續在功能分支上工作。

更新最多的回答確實指定了一個相當複雜的過程(合併,刪除& rebranch)。有沒有一種簡單的方法可以在TortoiseSVN中實現這一點?不應該有嗎?

回答

24

編輯此問題似乎已在SVN 1.8中修復。section on basic merging from the SVN 1.8 book已更新爲可以重複使用功能分支。下面的答案只適用於較老的SVN版本。


從svn書上basic merging部分:

在Subversion 1.5,一旦 --reintegrate合併從分支到主幹完成,分支是進一步不 再使用工作。這是 不能正確吸收新的中繼線 的變化,也不能正確地 重新集成到中繼。對於這個 原因,如果你想保持 的特性分支時,我們建議 摧毀它,然後從後備箱重新創建它 :

這仍然是在SVN 1.6和1.7的情況下。

excellent article on reflective merges解釋爲什麼正是你不能或不應該回收一個功能分支。最重要的一點總結:

  • 你可以做的工作,以解決衝突 與軀幹
  • 重返社會承諾在樹幹 重返社會時,因此既包含改變 從特徵分支 衝突來臨分辨率工作
  • 但是,顛覆不會幫助您 合併此衝突解決工作 回到功能分支。它只是 看着mergeinfo,並認爲 「這些變化最初來自 功能分支,不需要再合併 他們的起源」。

刪除功能分支和重新分支很便宜,避免了這個問題。

+0

該文章的鏈接被打破。這裏是工作網址:http://blogs.collab.net/subversion/2008/07/subversion-merg/ – 2012-03-23 15:15:49

+0

@bob:固定,謝謝 – 2012-03-23 20:33:07

-1

這一切都取決於你的個人意見,以及合併到主幹的人數。

如果你有很多人合併,那麼最好只合並一個分支,然後刪除它(你可以隨時訪問它,回到最後一個修訂版本存在)。如果你試圖在這種情況下不斷融合,你只會迷惑自己。

但是,如果您沒有多個子分支,並且您使用的是Subversion 1.5+,則可以避免這種情況,並且它可以幫助避免合併衝突。

當然,如果你的「trunk」被用作beta/release候選版本/發佈版本庫,那麼你不應該這樣做。

8

我們經常這樣做(SVN 1.5以上)。您只需確保不要將這些更改重新納入分支。

要做到這一點,只需做一系列修訂從樹幹合併到分支。在樹幹中指定您執行分支重新集成的修訂,並將其從中繼修訂標記爲「僅記錄合併」到分支。

一旦你這樣做,你應該很好去。

編輯
wcoenen從關於衝突的文章中提出的觀點是有效的。如果您在重新集成之前沒有將幹線更改同步到分支中,您將遇到衝突問題。我們保持分支同步,並且在多次重新集成後繼續重用分支沒有問題。

編輯2

保持一個重返科活着http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html

有摧毀和安置後重新創建分支的替代方法。爲了理解它的工作原理,您需要了解爲什麼分支在重新整合後最初不適合進一步使用。