[Subversion][Linux] svn でよく使うワンライナー
2 週連続で風邪を引いたよ nakamura です。季節の変わり目、みなさん体調管理には気を使いましょう~。
今でも古い案件では Subversion を使っていたりするのですが、今後は Subversion 関連の記事を書く機会も減っていきそうなので、今のうちに思いついたものを残しておこうと思います。今回は svn コマンドと組み合わせてよく使うワンライナーをご紹介します。
複数のファイルをまとめてコミット待ちに追加
新規に作成したファイルやディレクトリがいくつもある場合。svn stat の実行結果は例えば以下のようになるとします。
$ svn stat .
? app/plugins/debug_kit
? app/tests/groups
? app/tests/fixtures
この場合、以下のように追加対象を羅列してもいけるのですが・・・
svn add app/plugins/debug_kit app/tests/groups app/tests/fixtures
これだと対象となるファイルの数が多ければ多いほど面倒ですよね。そんな時はこんな感じのワンライナーでずばっと追加できちゃいます。
svn stat | grep -e "^?" | awk '{ print $2 }' | xargs svn add
ここから先は基本的に上記と同じ仕組みですが、コマンド例をいくつか紹介していきます。
複数のファイルの変更点をまとめて取り消す
複数のファイルを一括で revert するコマンド例。svn stat の結果は以下とします。
$ svn stat .
M app/app_controller.php
M .htaccess
M index.php
これをまとめて revert したければ以下でいけます!
svn stat | grep -e "^M" | awk '{ print $2 }' | xargs svn revert
複数のファイルをまとめて削除する
ファイルを削除する際、都度 svn del していれば問題ないのですが、どうしても普通に削除しちゃうことありますよね~。だって人間だもの。そういう時 svn stat の実行結果はこんな感じになります。
$ svn stat .
! app/app_model.php
! vendors/simplepie
! docs/INSTALL.txt
こいつらをまとめて svn del するには以下のコマンドでいけます。! はエスケープする必要があるので注意してください。
svn stat | grep -e "^\!" | awk '{ print $2 }' | xargs svn del
終わりに
要は grep と awk の組み合わせなので、まだまだ色んな事ができます(まとめて property を削除したりとか)。用途に合わせて工夫してみてください!