51

svnコマンドラインツールを使用して、追跡されていないすべてのファイルをSVNチェックアウトから削除するにはどうすればよいですか?GitとHgはこの目的のためのコマンドを提供cleanしてpurgeいますが、SVNで対応するコマンドが見つかりません。

プロセスですべてのローカル変更を元に戻す必要があるかどうか(この場合、基本的にチェックアウトを元の状態に復元したい)、または追跡ファイルへのローカル変更をそのまま維持できるかどうかは関係ありません。どちらの状況でもかまいません。

4

4 に答える 4

65

組み込みの方法があるかもしれませんが、そうだとしたら、私にはわかりません。ただし、次のようなものでうまくいくはずです。

svn st | grep '^?' | awk '{print $2}' | xargs rm -rf

(バージョン管理されていないすべてのファイルは、で始まる行に表示される必要があります?svn st

編集(@GearoidMurphy xargsはWindowsパススラッシュをエスケープシーケンスとして扱い、「\ r \ n」行末の解析に問題があるため、このスニペットをcygwin環境で機能させるのは困難です。これを完全に修正したソリューションを以下に示します。有効な答え:

svn st | grep '^?' | gawk '{printf(\"%s|\", $2)}' | xargs -d "|" -n1 C:\cygwin\bin\rm -r
于 2012-05-02T13:19:47.623 に答える
41

バージョン1.9以降、次を使用できます。

svn cleanup . --remove-unversioned

https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-optionsを参照してください

于 2018-09-12T22:16:29.213 に答える
20

svn-cleanスクリプトはこれを正確に実行しますが、perlがインストールされていることに依存しています。ローカルの変更はそのまま残されますが、無視されたファイルは削除されます。'-p'を指定して実行し、削除されるファイルをプレビューします。

于 2012-05-02T14:57:52.153 に答える
4

このコマンドは、ジョブ、スペース、およびすべてを実行する必要があります(OSXでのみ試行):

svn status | grep '^\?' | sed 's/? *//' | xargs -I%  rm -fr %
于 2014-09-15T07:56:36.720 に答える