を実行すると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
を にmkdir
、rm
を に置き換えます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
終わり。