2012-02-10 45 views
19

我遇到以下基本樹衝突:本地添加,傳入添加合併。如何接受'他們衝突'來解決樹衝突:本地添加,傳入添加合併

我知道我們可以用svn resolve --accept working file來解決它,但是SVN阻止我用accept their-conflict接受傳入版本。

誰能告訴我如何通過傳入的替換我的本地文件?有沒有可能以任何方式使用svn resolved file

+0

一種選擇是將本地文件移開,執行'svn update',將文件放回,然後執行'svn commit'。當然,這可能不是「正確」的方式,但它可能比使用SVN命令簡單得多。 – aroth 2012-02-10 06:58:03

+0

@aroth,這些文件已經存在於主幹和分支中(背景:我將分支合併到每週主幹),事實上,我想用分支中的一個覆蓋主幹中的那個,正如你所說的,我需要在trunk中刪除這些文件,然後提交,然後從分支合併它們,對吧? – 2012-02-10 08:41:20

+0

你解決了你的問題嗎? – 2012-05-02 19:19:53

回答

11

正確的做法是在先前的 - 潛在運行中檢測到此問題,並在合併之前刪除與本地衝突的目錄svn delete

第一種情況:已完成合並的工作副本。 解決方案:刪除工作副本,檢出乾淨的副本並做正確的事情。

第二種情況:已經提交了錯誤的目錄,在svn resolve --accept=working之後。

您必須svn delete衝突的目錄,並從衝突的目錄的父目錄重新運行合併忽略mergeinfo。恢復除了上一個衝突目錄之外的每個對象(現在不存在衝突)。檢查並提交更改。

Ex。工作副本的WC文件夾。你在A/conflictDir目錄衝突:

cd A 
svn delete conflictDir 
svn merge --ignore-ancestry -rbeginRev:endRev <URLrepo/A> 
svn -R revert `ls | grep -v conflictDir` 
<... check ...> 
svn ci -m "conflictDir fixed" 
5

我有類似的問題,在這裏我svn的更新具有與本地文件衝突的文件。我想讓遠程副本替換我的本地副本。我所做的是 svn delete file_name, 然後 svn revert file_name。 它恢復到遠程副本。我不確定是否需要第一次svn刪除。

+0

這對我來說,只是用'rm'刪除文件導致衝突保留,但用'svn delete'刪除它,然後恢復它修復了樹衝突。 – tomjen 2016-09-12 08:16:14