svn
コマンドラインツールを使用して、追跡されていないすべてのファイルをSVNチェックアウトから削除するにはどうすればよいですか?GitとHgはこの目的のためのコマンドを提供clean
してpurge
いますが、SVNで対応するコマンドが見つかりません。
プロセスですべてのローカル変更を元に戻す必要があるかどうか(この場合、基本的にチェックアウトを元の状態に復元したい)、または追跡ファイルへのローカル変更をそのまま維持できるかどうかは関係ありません。どちらの状況でもかまいません。
svn
コマンドラインツールを使用して、追跡されていないすべてのファイルをSVNチェックアウトから削除するにはどうすればよいですか?GitとHgはこの目的のためのコマンドを提供clean
してpurge
いますが、SVNで対応するコマンドが見つかりません。
プロセスですべてのローカル変更を元に戻す必要があるかどうか(この場合、基本的にチェックアウトを元の状態に復元したい)、または追跡ファイルへのローカル変更をそのまま維持できるかどうかは関係ありません。どちらの状況でもかまいません。
組み込みの方法があるかもしれませんが、そうだとしたら、私にはわかりません。ただし、次のようなものでうまくいくはずです。
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
バージョン1.9以降、次を使用できます。
svn cleanup . --remove-unversioned
https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-optionsを参照してください
svn-cleanスクリプトはこれを正確に実行しますが、perlがインストールされていることに依存しています。ローカルの変更はそのまま残されますが、無視されたファイルは削除されます。'-p'を指定して実行し、削除されるファイルをプレビューします。
このコマンドは、ジョブ、スペース、およびすべてを実行する必要があります(OSXでのみ試行):
svn status | grep '^\?' | sed 's/? *//' | xargs -I% rm -fr %