こんにちは、鈴木です。
あえて言うほどではないけれどもシリーズです。
svn 関係の良く使うコマンドをご紹介します。
ファイルの追加、変更
まずはファイルの追加、変更からです。
いろいろなパスに新しいファイルを作成することがあると思います。
例えば Rails の scaffold でモデル、ビュー、コントローラ、テストコードにマイグレーション等をまとめて生成した場合です。
一つ一つのファイルを svn add するのは面倒なので、そのような場合は以下のようにまとめて svn add してしまいます。
1 2 |
# 新規作成したファイルを全て追加 (svn add) する. svn status | grep ^? | awk '{print $2}' | xargs svn add |
リポジトリに存在しないファイルは、svn status の出力で「? piyo.txt」のように「?」から始まるので、grep ^? で「?」から始まる行のみ抽出します。
次に、awk '{print $2}' で「? piyo.txt」からファイル名(つまり「piyo.txt」)を切り出し、xargs で svn add の引数に与えます。これで新規作成したファイルをまとめて svn add することができます。
同様に、変更したファイルをまとめて戻す (svn revert) するには、以下のようにします。
1 2 |
# 変更したファイルをまとめて svn revert する. svn status | grep ^M | awk '{print $2}' | xargs svn revert |
変更の取り消し
「間違った修正をコミットしてしまった!」ということ。あると思います。
以下のように逆方向にマージします(リビジョンは -r100:99 のように FROM > TO とすることができます)。
1 |
svn merge -r100:99 . |
コミットログの表示
直近 N 件だけ確認したい、という場合は -l (--limit) オプションを使用します。
1 2 |
# 最新 10 件のコミットログを表示する. svn log --l 10 |
svn copy でコピーされた後のログだけ見たい、という場合は --stop-on-copy オプションを付けます。
svn copy でブランチを作成したものの、それ以前のログは表示しなくて OK という場合に使います。
1 2 |
# svn copy で作成された後のログのみを表示する. svn log --stop-on-copy |
-v オプションを付けると、そのコミットで変更されたファイルを確認することができます。
1 2 |
# 変更されたファイル一覧を確認する. svn log -v |
-c オプションでリビジョンを指定することで、特定のコミットで変更された内容を diff 形式で表示することができます。
1 2 |
# リビジョン 777 の変更内容を確認する. svn diff -c777 |
ヘルプ
最後に、困ったときはヘルプです!
1 2 3 4 5 |
# ヘルプを表示. svn help # 特定のコマンドのヘルプを表示. svn help blame |