簡體   English   中英

合並結構變更時避免樹沖突

[英]Avoiding tree conflicts when merging structural changes

我已經創建了一個分支,以對網站進行一些清理和結構更改。 主干的內容只是網站文件,如下所示(為簡便起見縮寫):

/trunk/css/
/trunk/images/
/trunk/js/
/trunk/index.html

分支后,我將內容下移了一層,並為非網站內容(主要是PSD文件)創建了另一個目錄,我仍然需要保留該目錄並使用該目錄。 現在的結構是:

/branches/cleanup/www/css/
/branches/cleanup/www/images/
/branches/cleanup/www/js/
/branches/cleanup/www/index.html
/branches/cleanup/support/psd/

如何將其干凈地合並回樹干,而不會造成大量樹沖突? 我敢肯定我以前做過。 問題是,我無法為自己的一生而記得如何。

自創建分支以來,我進行了許多主干更改,因此樹沖突充斥了我。

我很樂意接受一個不太理想的解決方案,因此我的備份計划是忘記合並,而是在主干上執行svn move/branches/old-trunk/ ,然后svn move進行清理分支到/trunk/並從那里開始。

除了必須手動將主干更改應用於清理分支之外,這樣做還會有討厭的副作用嗎?

如果trunk的文件沒有任何更改,則不會有任何沖突。

如果您更改了trunk內的任何文件,這些文件也已在分支內移動,則無法在Subversion中解決此問題而不會引起樹沖突。

更新

如果移動分支以將其用作新的trunk ,它將破壞您可能擁有的任何其他分支的自動合並解析。 除此之外,此舉應該沒有問題,因為就svn而言, trunk絕非“特殊”目錄,也不不同於任何其他目錄。

如果您願意放棄自創建分支以來對中繼所做的更改,則可以使用--accept選項來svn merge來指定在沖突時始終要使用分支版本:

svn checkout TRUNK_URL WC_PATH
svn merge --accept theirs-full BRANCH_URL WC_PATH

您也可以嘗試使用theirs-conflict而不是theirs-full的沖突,僅從分支獲取文件的沖突區域 ,而不是整個文件。 在您的情況下,由於您將所有內容都移到了一個單獨的目錄中,所以我認為不會有任何區別,但是我會嘗試兩者進行比較。

最終,盡管如此,您可能出於某種原因對主干進行了這些更改。 我只是硬着頭皮解決沖突,而不是把工作丟在垃圾桶里。 還有其他可能的解決方法可以減輕過程的麻煩,例如將分支中的內容移回與主干相同的目錄結構中,進行合並,重新分支,以及僅更改目錄結構,但是隨后您將引入額外的功能並發症。

順便說一句,這就是為什么您應該經常合並的原因。 SVN 1.5中引入了自動合並跟蹤,使該過程比以前要痛苦得多。

暫無
暫無

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

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