web-dev-qa-db-ja.com

SVNとのツリーの競合を解決できません

最近、Subversionの非常に奇妙な動作に遭遇しました。

私はブランチのローカルコピーをリモートブランチとマージしました。すべてがスムーズに進みましたが、ツリーの競合が1つあります(ローカル削除、リモート更新)。

さて、私は作業コピーを適切に変更して、「svn resolve --accept = working -R。」を実行したと思いました。

Subversionは私の問題を解決し、「svn st」は問題を示さなくなったと言いました。だから、私はコミットしようとしましたが、svnは内側のフォルダーの1つ(私の競合するフォルダー内)が古く、svn upするように提案しましたが、それによってフォルダーが再び競合するようになりました!

この視界から抜け出すにはどうすればいいですか?

26
Anton

これは役立つ場合もあれば、そうでない場合もありますが、「svn cleanup」で奇妙なメタデータの問題が修正される場合があります。クリーンな作業コピーをチェックアウトした場合、クリーンなコピーにも同じ問題がありますか?もしそうなら、前の答えは正しい方向への一歩のように聞こえます

8
Sam Post
~/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'

この助けを願っています

44
Jabir Ahmed

Svn resolveコマンド以外の方法を使用できます。

  1. 競合するファイルのパッチを作成します。 (またはsvn exportを使用した競合フォルダーのバージョンのバックアップ...)
  2. リポジトリを更新する(svn update)
  3. 以前に実行したパッチを適用します(または、競合するファイル/フォルダーをバックアップに置き換えます)。
  4. 変更をコミットします(svn commit)
5
Phong

これは、ローカルでの変更をすべて破棄し、サーバーリポジトリのファイルを使用するために機能したものです。

svn update --accept theirs-full

svn resolve --accept theirs-full <pathname>

次のメッセージが表示されます:W155027:ツリーの競合は「実行中」にのみ解決できます

直感的ではない次のステップですが、これは実際には難問22を削減します

svn resolve  --accept=working <pathname>

今すぐすべての「作業中の」変更を再帰的に戻します。これは私のすべてのローカル変更を元に戻しました。

svn revert -R .

エラーなしで通常に戻ります。

svn update
3
Chloe Tempo

おそらく、マージを実行したときにフォルダーを更新していなかったか、マージ前のどこかに競合がありました。修正するには、トランク(ターゲットフォルダー)を以前のリビジョンに戻す必要があります。次に、そのフォルダーでクリーンアップを実行します。次に、ブランチフォルダー(ソースフォルダー)に対してクリーンアップを実行します。次に、両方のフォルダを再度更新します。ワークフローで線が赤くなっている場合は、まずそれらのファイルを元に戻し、次にそれらを希望する状態に戻す必要があります。次にフォルダーを更新します(はい、もう一度)。最後にもう一度マージを実行します。

0
MacGyver