[Subversion][Linux] svn でよく使うワンライナー

No Photo

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 を削除したりとか)。用途に合わせて工夫してみてください!

photo
Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
Mike Mason でびあんぐる
オーム社 2007-04-21

by G-Tools , 2012/10/29

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ