2010-10-25 73 views
1

我有一個倉庫,看起來像這樣:合併移動的分支時如何避免樹衝突?

/a/trunk/Library 
/a/branches/FeatureX/Library 
/b/trunk/Application 
/b/branches/FeatureX/Application 

我要重新排列,這樣我有應用程序和庫文件夾旁對方:

/a/trunk/Library 
/a/trunk/Application 
/a/branches/FeatureX/Library 
/a/branches/FeatureX/Application 

我試圖實現這一目標只需「svn copy」 - 「應用程序」文件夾。我面臨的問題是,當我嘗試在稍後將「FeatureX」合併到「trunk」中時,由於「應用程序」已添加到主幹和分支中,所以我得到樹衝突。

有沒有更好的方法來做到這一點?

(順便說一句,我不能合併「FeatureX」 之前複製「應用程序」,這僅僅是一個測試,看它是否將有可能稍後...)

回答

0

選項1:合併從主幹的變化(aka/b/trunk/Application)到你的/ a/branches/FeatureX。那你應該在FeatureX分支中給你一個「原始」應用程序文件夾。然後做一個delta合併服務/ b/trunk/Application和/ b/branches/FeatureX/Application,並將這些更改合併到/ a/branches/FeatureX/Application的工作副本中。這應該允許你乾淨地將/ a/branches/FeatureX合併到/ a/trunk。選項2:不要svn copy/b/trunk/Application到/ a/trunk。而不是svn copy/b/branches/FeatureX/Application到/ a/branches/FeatureX。然後在準備好後將這些更改合併到/ a/trunk。如果/ b/trunk/Application中有不在/ b/branches/FeatureX/Application中的更改,則在將svn複製到/ a/branches/FeatureX之前,您需要重新設置該分支。

+0

在選項1中,不應該是「aka/b/trunk/Application」嗎? – hmn 2010-10-29 07:40:15

+0

如果我正確理解您的解決方案,那麼在兩個選項中,只有在將「FeatureX」合併到「主幹」作爲最後一步之後才能實現最終佈局。但在我的場景中,「FeatureX」不會合並數週或數月,而我想現在實施新的存儲庫佈局。 – hmn 2010-10-29 08:14:46

+0

我改正了路徑,你是對的。 – jgifford25 2010-11-01 14:48:38

0

選項3:根據您對上一個答案的評論,試試這個。將/ b/trunk/Application的SVN拷貝到/ trunk /應用程序中。將/ a/branches/FeatureX中的/ a/trunk樹與/ a/trunk包含應用程序目錄的最新(更可能是HEAD)樹合併,並將其應用於/ a//支鏈/ FeatureX。提交這些更改。現在針對/ a/branches/FeatureX/Application的工作副本,將/ b/branches/FeatureX/Application另一個delta合併到/ a/branches/FeatureX/Application。將這些更改提交到存儲庫。您應該對/ a/trunk中的所有/ a/trunk中的所有更改以及/ a/branches/FeatureX中/ b/branches/FeatureX中的所有更改準備好合併回/ a/trunk當你準備好的時候。但是,您將失去/ a/branches/FeatureX/Application中/ b/branches/FeatureX/Application的所有提交的直接歷史記錄。您仍然可以通過svn log命令使用-g選項在/ a/branches中查看/ b /分支中的歷史記錄。

0

將你的svn副本做成只有「應用程序」的主幹。從trunk中創建一個新分支:featurex2。將featurex合併到featurex2。刪除featurex它現在是一個有吸引力的nussaince。