2010-06-07 187 views
6

可以說我有一個名爲「branches/BigFeature」的功能分支。我希望將這些更改推送到Trunk,對Trunk進行一些更改並將其全部歸併到「BigFeature」分支中,以便繼續進行開發。爲什麼在將分支合併到中繼並將分支合併回分支時會發生衝突?

我的步驟是:

  1. 合併在主幹上的最新變化分行/ BigFeature。 (龜SVN - >合併一系列修訂版)

  2. 將分支/ BigFeature中的更改合併到主幹。 (烏龜SVN - >重新整合分支)

  3. 對Trunk做一些更改。

  4. 合併在樹幹的分支/ BigFeatures的變化。 (烏龜SVN - >合併一個版本範圍)

的問題在步驟4中出現。當我合併回BigFeature我得到的各種衝突。它似乎有問題,最初被添加到分支/ BigFeature但合併到中繼的文件。

是給我的信息是「最後 合併操作試圖添加文件 ‘嗒嗒’,但它已添加 本地。

這個還挺有道理的,因爲該文件最初是添加到分支/ BigFeature分支,然後合併到Trunk中,但爲什麼合併操作不能實現這個功能?爲什麼它會出現衝突?

刪除文件發生同樣的錯誤

上次合併操作嘗試刪除/移動/重命名目錄'blah',但它在本地被刪除,移動或重命名。

感謝您的幫助。

+5

SVN合併一般不能很好地工作。 – alternative 2010-06-07 21:59:11

+1

有替代品嗎? – Justin 2010-06-07 22:12:49

+5

任何說svn merge不起作用的人都沒有做對。 Svn對變化的概念性看法並不是最好的(後來的SCM如git讓它更接近標記),但是不可能做到與顛覆無法合併甚至管理複雜的代碼庫,並且合併來臨進進出出。 – Ether 2010-06-07 22:20:41

回答

7

遺憾的是SVN的一個缺陷,它的構建方式。

在SVN步驟必須是這樣的:

1. (not modified) Merge the latest changes in Trunk to branches/BigFeature. (Tortoise SVN -> Merge a range of revisions) 
2. (not modified) Merge the changes in branches/BigFeature to Trunk. (Tortoise SVN -> Reintegrate a branch) 

2a. Delete branch branches/BigFeature 
2b. Create branch branches/BigFeature from current trunk 

3. (not modified) Make some changes to Trunk. 
4. (not modified) Merge the changes in Trunk to branches/BigFeatures. (Tortoise SVN -> Merge a range of revisions) 

SVN分支不能再使用了復興操作之後。

更新:有一個second way,而不是刪除的分支。

2a. on branch: 
    $ svn update 
    Updated to revision X 
    $ svn merge --record-only -c X ^/trunk 
    $ svn commit -m "Block revision X from being merged into the branch." 

我不知道這一招,我學會了感謝你的問題:d

+0

這是不幸的。但嘿,至少它不只是我:)這個工作應該做的伎倆。 – Justin 2010-06-07 22:12:12

+0

不需要一直刪除和重新創建分支。您只需正確構建合併命令即可不重新合併之前合併的所有內容。 – Ether 2010-06-07 22:20:16

+0

您能否提供一些有關如何做到這一點的見解?我可以使用cmd命令行,但顯然希望如果Tortoise SVN提供了這種方法。 – Justin 2010-06-08 00:08:17