我試圖合併一個樹幹到一個分支,但結束了很多樹衝突,沒有任何文件合併。爲了解決這些衝突,我只是打開文件並手工複製內容,這就違背了合併操作的目的。 將樹幹合併到分支(在subclipse中)的正確方法是什麼?Subclipse樹衝突
0
A
回答
0
那個分支是如何創建的?它是使用svn cp
創建的,還是手動將這些文件複製到該分支中?
讓我們來看看下面的例子:
$ svn mkdir trunk
$ vi trunk/foo trunk/bar
$ svn add trunk/foo trunk/bar
$ svn commit -m"Added foo and bar to trunk"
你現在有主幹兩個文件。
$ svn mkdir --parents branches/1.0
$ cp trunk/* branches/1.0/
$ svn add branches/1.0/*
$ svn commit -m"Duplicated files onto branch"
我所做的是創建在1.0分支兩個完全不同的foo
和bar
。根據Subversion,這兩個文件完全沒有關係。如果您在1.0分支上進行了更改,並嘗試將這些更改合併回主幹,則會與諸如「本地添加,傳入添加」之類的消息產生很多衝突。
什麼上面的用戶應該做的是:
$ svn cp --parents trunk branches/1.0
$ svn commit -m"Branched trunk and not merely duplicate files"
現在,有這麼顛覆樹幹上的文件之間並在1.0分支理解的關係。合併將順利進行。
這裏的另一種方式,打破了合併:
$ svn delete trunk/foo
$ svn commit -"deleted foo"
$ svn cat -rPREV trunk/[email protected] > foo
$ svn add foo
$ svn commit -m"Added foo back in. Shouldn't have deleted it.
據顛覆,現在有在後備箱命名foo
兩個完全不同的文件。有你刪除的文件,還有你添加的文件。這兩個文件沒有任何關係。想象一下,如果我將分支(使用svn cp
的正確方法)分支到1.0分支,那麼我的刪除和複製foo
。由於分支上的foo
與trunk上的foo
沒有任何關係,因此1.0分支與主幹的合併將會產生衝突。
要恢復文件,您需要複製已刪除的修訂(或使用svn merge -c
)。
$ svn cp -rPREV http://svn.repo/svn/trunk/[email protected] .
$ svn commit -m"Actually old foo now has been restored! Merges will work"
如果分支不正確或刪除並將文件重新添加回主幹,將會發生衝突。您可以嘗試使用--ignore-ancestory
參數,並且可以在運行實際合併之前使用--dry-run
來測試您的合併。
如果您手動合併,則可以使用svn merge --record-only
僅記錄您進行合併而不實際執行合併的事實。這可能有助於您下次進行合併,因爲您至少可以重新編碼您手動完成的操作。
相關問題
- 1. SVN中的樹衝突(subclipse)
- 2. SVN樹衝突的Subclipse
- 3. 與Subclipse合併時出現樹衝突
- 4. Subclipse衝突解決
- 5. svn樹衝突
- 6. Subclipse svn沒有顯示衝突
- 7. Subclipse>意外合併衝突解決
- 8. 解決樹衝突
- 9. svn merge:樹衝突怪異
- 10. SVN樹衝突錯誤
- 11. SVN樹衝突,而合併
- 12. SVN樹衝突問題
- 13. SVN合併樹衝突
- 14. 在subclipse中使用svn時發生衝突
- 15. 在eclipse中衝突時發生Subclipse文件提交問題4.2.0
- 16. SVN(Subclipse)在合併衝突後創建.edited文件
- 17. 解決樹衝突烏龜SVN
- 18. SVN樹衝突 - 只想獲取文件?
- 19. 樹衝突時,在工作副本
- 20. 無法解析與SVN的樹衝突
- 21. 提升屬性樹訪問衝突
- 22. SVN X仍然存在樹衝突
- 23. 什麼是svn中的樹衝突?
- 24. C++二叉樹衝突類型錯誤
- 25. Xcode解決合併樹衝突
- 26. TortoiseSVN給我一棵樹衝突
- 27. 合併時的TortoiseSVN「樹衝突」文件
- 28. 導出/導入樹(ID的衝突)
- 29. 如何「修復」SVN分支/樹衝突?
- 30. 烏龜SVN樹衝突與自己
如果分支不是使用svn cp創建的,它的歷史是否也包含主幹歷史記錄,直到這一點?因爲我可以看到分支歷史記錄中的主幹日誌。無論如何,現在我知道正確的分支方式來避免合併錯誤,謝謝你的詳細答案。 – Rnet