web-dev-qa-db-ja.com

「theirs-conflict」を受け入れてツリーの競合を解決する方法:ローカル追加、マージ時の受信追加

次の基本的なツリーの競合に遭遇しました:ローカル追加、マージ時の受信追加。

私はsvn resolve --accept working fileを使用してそれを解決できることを知っていますが、SVNはaccept their-conflictを使用して着信バージョンを受け入れることができません。

ローカルファイルを受信ファイルで置き換える方法を誰かに教えてもらえますか?何らかの方法でsvn resolved fileを使用することは可能ですか?

24
Elie Xu

正しいことは、以前の--dry-runでこの問題を検出し、マージを行う前にsvn deleteでローカルの競合するディレクトリを削除することです。

最初のシナリオ:マージ済みの作業用コピーは既に完了しています。解決策:作業コピーを削除し、クリーンコピーをチェックアウトして、正しいことを行います。

2番目のシナリオ:svn resolve --accept=workingの後で、すでに間違ったディレクトリをコミットしました。

競合するディレクトリをsvn deleteし、mergeinfoを無視して、競合するディレクトリの親ディレクトリからマージを再実行する必要があります。以前の競合するディレクトリを除くすべてのオブジェクトを元に戻します(現在は競合はありません)。変更を確認してコミットします。

例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"
14
Diego F. Durán

同様の問題があり、ローカルファイルと競合するファイルをsvnで更新しました。リモートコピーでローカルコピーを置き換えたい。私がしたことはsvn delete file_name、 その後 svn revert file_name。リモートコピーに回復します。最初のsvn deleteが必要かどうかわかりません。

8
Pengyao