2011-01-05 25 views
5

私はいくつかの材料がプロジェクトから削除されたため、この問題が発生した(と私はそれを削除するにはSVNを使用することはできません)次の問題にsvnは削除したファイルを "無視"するか、リポジトリから削除できますか?

svn: '/var/www/sites/blabla/425/file.png' is scheduled for addition, but is missing 

を取得svnのために私のプロジェクトをコミットしてみてください。このようなファイルを無視するようにsvnに伝える方法はありますか?それが見つからない場合は削除するだけですか?

答えて

7

あなたがsvn statusを行うと、出力は感嘆符で始まる行として「欠落」しているようなファイルが表示されます:あなたのスクリプト言語やコマンドでスクリプトを書く必要があります

!  425/file.png 

を(このシェルは、この出力を解析し、感嘆符で始まる行を探し、ファイル名を抽出してからsvn revert <filename>を実行します。これにより、そのファイルへのローカル変更が取り消され、問題なくコミットできます。

編集:コメントにPHPスクリプトが記述されているので、あなたはPHPスクリプトに精通していると思います。その場合、PHP関数svn_statusを利用することができます。

edit2:ファイルをリポジトリから削除する場合は、代わりにsvn rm --force <filename>を実行してください。

+0

チップをありがとう。私は実際にすべての新しいファイルを追加するために同様のスクリプトを使用しています:** svn status | grep^\? | awk '{print $ 2}' | xargs svn add **。私はちょうど "と置き換えることができると思いますか?" "!" "--force delete"で "add"しますか? – aneuryzm

+0

私は実際に試してみましたが、うまくいきません。申し訳ありませんが、私はファイルを元に戻すことはしませんが、リポジトリから削除することを忘れています。 – aneuryzm

+0

@Patrickの "svn add"コメントの代わりに "svn rm"を使用するだけです。 – ATorras

5

あなたはsvn addですが、ファイルは後で手動で削除しますか?試してみる。

svn rm --force file.png 

SVNインデックスから削除する。

+0

@ smail 'cartman 'DönmezファイルはPHPスクリプトによって削除されます。だから私は "svn rm"(私はあなたのコマンドでファイル名をdunno)で削除するファイルをdunno。私は作業コピーに見つからないファイルを自動的に削除する必要があります)。 – aneuryzm

+0

自動的な方法はありません。削除したパスを手動で検索し、 'svn rm --force'を実行する必要があります。 – ismail

+0

あなたが求めている動作は「危険」です。誤ってファイルをワークスペースから削除した場合、それはかなり破壊的な対応です。 – jaydel

2

を実行し、ターミナルから以下のコマンドを実行します。私のために

svn revert $(svn st | awk 'BEGIN{FS=""} $1=="!" && $2 !~ /\.(sql|log|tmpl)$/ {print $2}') 
1

作品:

svn status | grep ^\! | awk '{print $2}' | xargs -L1 svn del --force 

、あなたのファイル名に空白がある場合、我々はawkを使用することはできませんので、我々は開始までカットファイル名(これはおそらくこのファイルを編集する必要があります:idkはすべてのシステムで9文字を切り捨てなければならないので):

svn status | grep ^\! | cut -c9- | sed 's/ /\\ /g'| xargs -L1 svn del --force 
+1

このコード/スニペットは質問に答えるかもしれませんが、問題の解決方法および/ 。 – Akkusativobjekt

+0

ここで知るべき唯一の秘訣は、xargsに-L1オプションを使用して実行を1行ずつ制限することです。そうしないと、xargsが処理できる文字のサイズがあふれてしまうことがあります –

関連する問題