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


293

私が行うとき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
レスマナの答えもメッセージに"local missing or deleted or moved away, incoming dir edit upon merge"
有効

回答:


434

短縮版:

$ 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

競合ではなく、ファイルのディレクトリについてのであれば、交換するtouchmkdirしてrmrm -r


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

$ 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

競合がディレクトリに関するものである場合はtouchmkdir

新しい状況:リポジトリに追加するローカルファイル(そうですね、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

競合がディレクトリについてであれば、交換してくださいrmrm -r

svnは文句を言いません:

$ svn st

できました。


8
これは、競合がディレクトリの場合にも機能します。代わりのタッチfooのバー行います。mkdir fooのMKDIRバーを。他はすべて同じです。
Vipin Johney 2013

svn st | grep ! | cut -f 7 -d' ' | xargs touch不足しているすべてのファイルに触れるための1つのライナーとして使用できます
Tibor Blenessy

ディレクトリも忘れないでくださいrm -r foo barrmdir foo barWindowsの場合、またはWindowsが好きな場合)。
トリシス

この答えは私の正気を救いました。ありがとうございました。
サム

159

を使用して競合を解決してみてください

svn resolve --accept=working PATH

ありがとう。それは正しい解決策のようです。(以前に「解決」オプションについて知りませんでした。私はそれを回答としてマークしました。しかし、おそらく私の作業コピーツリーが破損しているか、何かが原因で私にはうまくいきませんでした...結局私はそれを解決しましたディレクトリを削除して更新するだけ
Xah Lee

1
最初はうまくいきませんでしたので、一時フォルダーにあるsvnブランチの別のコピーをチェックアウトしました。次に、競合を引き起こしているPATHを削除し、変更をコミットしました。その後、元のコピーに戻ってこのコマンドを実行しました。「解決されたPATHの競合状態」というメッセージで動作しました。これは、おかげで動作します:)
Durin

"resolve"は作業コピーでのみ機能するため、オリジナルがリポジトリから削除されていてもいなくてもかまいません。
govi

私にとって完璧なソリューション
セルジオアルバレス

20

同じ問題が発生しました

$ svn revert foo bar

問題を解決しました。

私にとってsvn resolveは機能しませんでした:

$ 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

2

あなたが競合ディレクトリ内に変更していない場合は、することもできますrm -rf conflicts_in_here/し、その後svn up。これは少なくとも私にとってはうまくいきました。


1

ローカルディレクトリを強制的にsvnに戻すことができます。

 svn revert -R your_local_path

おかげで、また解決するために私を助けたA + C path/to/dir> local dir edit, incoming dir delete or move upon update
RAM237

0

したがって、削除したファイルを元に戻すことができますが、設定したプロジェクトファイル(iOSなど)を使用して任意のタイプのプロジェクトで作業している場合、ファイルを元に戻すと、システムフォルダ構造に追加されますが、プロジェクトファイル構造には追加されません。この場合、追加の手順が必要になることがあります


0

この問題は、間違ったディレクトリから別のブランチの変更をマージしようとしたときによく発生します。

例:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

実行時にスローされる競合は次のとおりです。

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

そして、qを選択して解決中止すると、次のようなステータスになります。

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

これは、マージはに関連する変更が含まれていることを明確手段Branch1_SubDirBranch1_AnotherSubDir、これらのフォルダは内部見つかりませんでしたBranch1_SubDir(もちろん、ディレクトリ自体の内部ですることはできません)。

最初にこの問題を回避する方法:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

私のために働いたこの問題の最も簡単な修正

svn revert -R .
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.