次の基本的なツリーの競合に遭遇しました:ローカル追加、マージ時の受信追加。
私はsvn resolve --accept working file
を使用してそれを解決できることを知っていますが、SVNはaccept their-conflict
を使用して着信バージョンを受け入れることができません。
ローカルファイルを受信ファイルで置き換える方法を誰かに教えてもらえますか?何らかの方法でsvn resolved file
を使用することは可能ですか?
正しいことは、以前の--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"
同様の問題があり、ローカルファイルと競合するファイルをsvnで更新しました。リモートコピーでローカルコピーを置き換えたい。私がしたことはsvn delete file_name
、 その後 svn revert file_name
。リモートコピーに回復します。最初のsvn deleteが必要かどうかわかりません。