「ローカル編集、更新時に削除」メッセージを解決する方法 質問する

「ローカル編集、更新時に削除」メッセージを解決する方法 質問する

を実行するとsvn status .、次のようになります:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

基本的に、これらのファイルはリポジトリにあるべきではありません。開発者がそれらを削除しました。その後、私はsvn rm ...誤って事後的に を実行したと思います (代わりに を実行すべきでしたsvn update .)。

そのため、今、 を実行するとsvn status .、ツリーの競合メッセージが表示されます。

ドキュメントを見つけたここしかし、ドキュメントに従ってそれをどのように「マージ」するかはわかりません。

どうやってそれらを取り除くのですか?

作業コピーはリポジトリと同期していると思います。なぜこれらのメッセージが表示されるのかわかりません。これらのファイルは削除する必要があり、私の知る限りどこでも削除されています。試してみましたsvn update .が、svn revert .それでもこのメッセージが表示されますsvn status .

ベストアンサー1

短縮版:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

競合がファイルではなくディレクトリに関するものである場合は、touchを にmkdirrmを に置き換えますrm -r

touchは、空のファイルを作成するための一般的な Unix の慣用句です。その中核では、touchファイルのタイムスタンプを更新するために使用されます。ただし、副作用として、存在しない場合は空のファイルが作成されます。


注: 同じ手順は次の状況でも機能します。

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

ロングバージョン:

これは、他の誰かがファイルを削除して先にコミットしているときに、ファイルを編集した場合に発生します。良き SVN ユーザーとして、コミットの前に更新を行います。ここで競合が発生します。ファイルを削除するのが正しいと認識し、作業コピーからファイルを削除します。満足する代わりに、SVN はローカル ファイルが見つからないこと、および競合する更新があり、最終的にファイルが削除されることを要求していることを報告します。よくやった SVN。

何らかの理由で動作しない場合はsvn resolve、次の操作を実行できます。

初期状況: ローカル ファイルが見つからないため、更新が競合しています。

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

競合するファイルを再作成します。

$ touch foo bar

競合がディレクトリに関するものである場合は、touchに置き換えますmkdir

新しい状況: リポジトリに追加されるローカル ファイル (そう、svn など)、更新がまだ競合しています。

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

ファイルを svn が望む状態 (つまり削除済み) に戻します。

$ svn revert foo bar

新しい状況: ローカル ファイルが SVN に認識されず、更新が競合しなくなりました。

$ svn st
?       foo
?       bar

これでファイルを削除できます:

$ rm foo bar

競合がディレクトリに関するものである場合は、rmに置き換えますrm -r

svn はもう文句を言わない:

$ svn st

終わり。

おすすめ記事