[英]SVN merge between two branches - “path not found”
我有兩個分支(主干的孩子)需要合並到一個分支進行測試,但他們不能進入主干。 這兩個分支都與trunk @ HEAD保持同步。 所以我想從這里開始:
__________________trunk
\___duck \
\___beaver
對此:
__________________________trunk
\
\______________platypus
我從最新版本的trunk創建了分支platypus,並嘗試將duck和beaver合並到這個trunk的新副本中:
svn copy ^/trunk ^/branches/platypus;
svn switch ^/branches/platypus;
svn merge --reintegrate ^/branches/duck;
svn merge --reintegrate ^/branches/beaver;
但合並操作失敗了
svn: '/blah/!svn/bc/12047/repo/branches/duck' path not found
如果我嘗試 - 將鴨子(或海狸)整合到樹干中,它可以正常工作。 我在這里錯過了什么?
我有同樣的錯誤,並能夠通過手動指定我想要合並的所有修訂號而不是讓SVN決定來解決它。 這允許合並繼續並促使我按預期進行合並沖突。
我正在使用TortoiseSVN手動選擇修訂,但我認為使用SVN命令行它會是這樣的:
svn log --stop-on-copy https://svn.blah/svn/proj1/branches/xyz
然后記下所有修訂號並將它們全部合並,例如:
svn merge -c123,124,156,159 https://svn.blah/svn/proj1/branches/xyz
我有一個類似的問題,重新整合了一個從另一個分支合並的分支(現在已經重新整合)。 像這樣:
-----------------------------r7------------------
\ / /ERROR !svn/bc/4/repo/branches/duck' path not found
r1----dinosaur--r5------- /
\---duck------------r9
似乎沒有可能重新整合鴨子,未發現的路徑錯誤抱怨r4 - 但我可以合並特定的修改(r5-r9)從鴨子回到主干。
我解決了這個問題如下:
將有問題的分支合並到主干中
從trunk創建了新的“統一”分支
將干線恢復到步驟1之前的狀態並提交回復
合並記錄僅從第3步到分支
通過將新的合並分支合並回主干來測試,但當然沒有提交它
最終結果是一個新分支,其中包含來自功能分支和主干的更改不變(但是在日志中有一些新條目)。
發生這種情況是因為SVN不知道要合並哪些修訂版,可能是因為合並信息丟失或損壞。
通過比較日志找到兩個分支之間的共同祖先(具有最高修訂版X的常見提交):
svn log duck > dlog.txt
svn log beaver > blog.txt
合並從該修訂版X到當前頭的所有更改:
svn switch duck # if you are not already on it
svn merge -r X:HEAD beaver
# Merge conflicts
svn commit
注意:接受的答案建議使用--stop-on-copy
來查找共同的祖先。 雖然這有時可能會找到正確的修訂版本(例如,分支duck
和beaver
從trunk
分支的地方,如果在創建它們之后在任何分支中有任何svn copy
操作,它就不會給你一個共同的祖先。如果你知道這從未發生過,那么你可以使用--stop-on-copy
。
在進行合並時嘗試使用--ignore-ancestry選項。 可能是合並歷史記錄不完整(可能是由於烏龜或任何客戶端的事實),並且當您執行“正常”合並時,在分支上執行的操作會嘗試應用於工作副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.