2010-11-30 22 views
268

を解決する方法を、私はこれを取得:は、「ローカル編集、入ってくる更新時に削除」メッセージ

!  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 .を実行すると、これらのツリー競合メッセージが表示されます。

私は文書hereを見つけましたが、文書に従ってそれを「マージする」方法がわかりません。

どのようにそれらを取り除く?

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

答えて

382

ショートバージョンを使用して競合を解決してください:競合ではなく、ファイルのディレクトリについてです

$ 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 

場合は、mkdirrm -rrmtouchを交換してください。


注:同じ手順も、次のような状況のために働く:

$ 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 

衝突が続いmkdirtouchを置き換えるディレクトリについてです場合。

新しい状況:リポジトリに追加するローカルファイル(ええ、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 -rrmを交換してください。

のsvnは、もはや文句ありません:

$ svn st 

完了。

+6

これは、競合がディレクトリの場合にも機能します。 ** touch foo barの代わりに** do ** mkdir foo **と** mkdir bar **の代わりに。他のすべては同じです。 –

+0

私のために働いた! :) –

+0

あなたは 'svn st | grep! |カット-f 7 -d "|不足しているファイルにすべて触れるための1つのライナーとしてxargs touchを使用してください。 –

154

svn resolve --accept=working PATH 
+0

感謝。それは正しい解決策であるようです。 (以前は "解決"オプションについて知らなかった。私は答えとしてマークした。何らかの理由で、私の仕事コピーツリーが壊れていたか、それ以外のものがあったからだろう... ...私はそれを解決したただディレクトリを削除することで、更新を行います。 –

+1

それは最初に私のために動作しませんでしたので、私は一時フォルダにSVNのブランチの別のコピーをチェックアウトした。その後、私は競合の原因PATHを削除し、変更をコミット。 後私は元のコピーに戻ってこのコマンドを実行しました。「解決されたPATHの状態を解決しました」 これはうまくいきます:) – Durin

+0

私の理解では、元のファイルが削除されたかどうかはわかりませんリポジトリは、 "resolve"が作業コピー上でのみ動作するためです。 – govi

2

競合するディレクトリ内で変更を加えなかった場合は、rm -rf conflicts_in_here/、次にsvn upとすることもできます。これは少なくとも私のために働いた。

+2

これで解決されません。 –

18

私はこの同じ問題を持って、私は

$ svn revert foo bar 

は、問題を解決したことがわかりました。

のsvn決意が私のために動作しませんでした:

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

$ svn resolve --accept working 
svn: Try 'svn help' for more info 
svn: Not enough arguments provided 

$ svn resolve --accept working . 

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

$ svn resolve --accept working foo 
Resolved conflicted state of 'foo' 

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

だからあなたはちょうどあなたが削除されたファイルを元に戻すが、覚えて、あなたが設定したプロジェクトファイルとプロジェクトのいずれかのタイプで作業している場合(iOSのような)ファイルを元に戻すと、システムフォルダ構造に追加されますが、プロジェクトファイル構造には追加されません。あなたはこの場合あなたはSVNにローカルディレクトリを元に戻すために強制することができ

0

である場合には、追加の手順が必要になることがあります。

svn revert -R your_local_path 
関連する問題