最近、Subversionの非常に奇妙な動作に遭遇しました。
私はブランチのローカルコピーをリモートブランチとマージしました。すべてがスムーズに進みましたが、ツリーの競合が1つあります(ローカル削除、リモート更新)。
さて、私は作業コピーを適切に変更して、「svn resolve --accept = working -R。」を実行したと思いました。
Subversionは私の問題を解決し、「svn st」は問題を示さなくなったと言いました。だから、私はコミットしようとしましたが、svnは内側のフォルダーの1つ(私の競合するフォルダー内)が古く、svn upするように提案しましたが、それによってフォルダーが再び競合するようになりました!
この視界から抜け出すにはどうすればいいですか?
これは役立つ場合もあれば、そうでない場合もありますが、「svn cleanup」で奇妙なメタデータの問題が修正される場合があります。クリーンな作業コピーをチェックアウトした場合、クリーンなコピーにも同じ問題がありますか?もしそうなら、前の答えは正しい方向への一歩のように聞こえます
~/sandbox/jabira > svn resolve --accept=theirs-full testClient/
svn: warning: Tree conflicts can only be resolved to 'working' state; 'testClient' not resolved
~/sandbox/jabira > svn resolve --accept=working testClient/
Resolved conflicted state of 'testClient'
この助けを願っています
Svn resolveコマンド以外の方法を使用できます。
これは、ローカルでの変更をすべて破棄し、サーバーリポジトリのファイルを使用するために機能したものです。
svn update --accept theirs-full
svn resolve --accept theirs-full <pathname>
次のメッセージが表示されます:W155027:ツリーの競合は「実行中」にのみ解決できます
直感的ではない次のステップですが、これは実際には難問22を削減します:
svn resolve --accept=working <pathname>
今すぐすべての「作業中の」変更を再帰的に戻します。これは私のすべてのローカル変更を元に戻しました。
svn revert -R .
エラーなしで通常に戻ります。
svn update
おそらく、マージを実行したときにフォルダーを更新していなかったか、マージ前のどこかに競合がありました。修正するには、トランク(ターゲットフォルダー)を以前のリビジョンに戻す必要があります。次に、そのフォルダーでクリーンアップを実行します。次に、ブランチフォルダー(ソースフォルダー)に対してクリーンアップを実行します。次に、両方のフォルダを再度更新します。ワークフローで線が赤くなっている場合は、まずそれらのファイルを元に戻し、次にそれらを希望する状態に戻す必要があります。次にフォルダーを更新します(はい、もう一度)。最後にもう一度マージを実行します。