1

2 台の PC と svn リポジトリがあります。ノートブックを使用してsvnにファイルを追加し、もう一方にsvn upと言いました。ファイルは新しく、2 台目の PC には存在しませんが、次のようになります。

@konrad:~/svn$ ls web/web/browser.xslt.xml
ls: cannot access web/web/browser.xslt.xml: No such file or directory

@konrad~/svn$ svn up
Conflict discovered in 'web/web/WEB-INF/xslt/browser.xslt.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options:

どういう意味ですか?

4

1 に答える 1

0

あなたlsは別のファイルを示しています:web/web/browser.xslt.xmlではなくweb/web/WEB-INF/xslt/browser.xslt.xml. システムにないweb/web/WEB-INF/xslt/browser.xslt.xmlのですか?

私はいつもこれらの不可解な対立に出くわし、これが解決されるまで何もできないのでイライラします. diff-fullを実行してから、何をマージするか、またはどのようにマージするかを決定することもできると思いますが、問題を考えて解決するのに時間をかけることができないため、常にイライラしています。

更新を強制終了し、svn status. これで理由がわかります。でファイルを削除し、svn deleteこのファイルへの更新が入っている可能性があります。あなたがファイルを追加し、他の誰かも追加した可能性があります。ドライブにファイルの非 Subversion バージョンがあり、誰かがそれを Subversion に追加した可能性があります。ときどき、その対立は財産内の対立にすぎないことに気づきsvn:mergeinfoます。

最も簡単な方法は、問題を取り除き、現在リポジトリにあるものを受け入れることです。

  1. ファイルに対して実行しますsvn resolvedこれにより、競合状態から抜け出すことができます。
  2. 次に、ファイルに対して asvn statusを実行します。これにより、Subversion が何をしたかが表示されます。たとえば、このファイルを削除したか、このファイルを追加しましたか。
  3. ファイルが変更されていることがわかった場合は、そのファイルに対して diff を実行して、何が変更されたかを確認してください。差分もプロパティ値になる可能性があることに注意してください。
  4. ファイルが作業コピーに存在する場合は、安全のために、ファイルを別の場所にコピーしてください。
  5. そのsvn revert上で行います。ファイルが初期状態であることを示すsvn statusはずです。
  6. これでsvn update、ファイルに対して実行できます。これで、リポジトリから最新のコピーが取得されます。

すべてが明確になったら、続行する方法を決定できます。これが私が行った変更と誰かが行った変更との間の真の矛盾であったとしても、私はまだこの方法で行うことを好みます. vimdiff更新の途中で行うよりも、違いが何であるか、何を更新するかをはるかに簡単に確認するために使用できます。

于 2012-10-28T03:11:50.297 に答える