プロジェクトでいくつかのファイルを作成したことを忘れて、開発中にコミットすることにした場合があります。それから数日後、あなたの仲間はあなたのビルドをSubversionから取り出し、いくつかのファイルが欠落しているように見えると不平を言います。あなたは、ああ、くだらないことに気づきました、私はそれらのファイルを追加するのを忘れました!
Subversionからバージョン管理されていないファイルのリストを取得して、すべてをリポジトリに追加したことを確認するにはどうすればよいですか?
回答:
次のsvn status
コマンドを使用します。
svn status | grep ^?
バージョン管理されていないファイルは?で示されます 行の先頭に。
リポジトリに追加してはならない特定のファイル(生成されたバイナリなど)が常にあるsvn:ignore
場合は、を使用しているときにこれらのファイルが表示され続けないように、含まれているディレクトリにプロパティを設定する必要がありますsvn status
。
svn st | grep ^? | awk '{print $2} | xargs svn add
これにより、バージョン管理されていないファイルが最初に検索され、awkは行の2番目の項目(つまりファイルパス)のみを出力し、xargsはこのパスをsvnの引数にします。追加。
svn st | grep ^? | awk '{print $2}' | xargs svn add
一部のファイルがignore
ステータスに追加されている場合、それらはに表示されませんsvn status
。あなたは必要になるでしょう:
svn status --no-ignore
Windowsで実行している場合は、PowerShellを使用してGregHewgillの回答と同様のことを行うことができます。
(svn stat) -match '^\?'
これを非常に簡単に拡張して、バージョン管理されていないファイルや無視されたファイルをすべて見つけて削除することができます。
(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm
それが誰かに役立つことを願っています!
() -math
呼ばれますか?
このコマンドを使用して、バージョン管理されていないファイルのすべてのパスを一覧表示できます。
svn status | awk '/^?/ {print $2}'
最初の部分はを実行しsvn status
、次に出力をAWKにリダイレクトします。これにより、単純なフィルター「最初の文字は「?」である必要があります」が実行され、2番目のパラメーター「ファイルパス」が出力されます。
svn status
無視されたファイルを常に印刷するとは限りません。を使用してそのパスを追加することにより、ファイルまたはパスを追加できます
svn propset svn:ignore "PATH OR PATERN"
svn status
、バージョン管理されていないファイルだけでなく、すべての結果が得られるようです。フィルタは正規表現であるsvn status | awk '/^\?/ {print $2}'
ため、コマンドはをエスケープする必要があると思います?
。