メニューを閉じる

テクノデジタルグループ

メニューを開く

2015.03.26

開発環境・ツール

SVNをコマンド操作する際の便利なコマンド

こんにちは、KTです。

MacのいいSVNクライアントが見つからず、最近はずっとコマンドでSVN操作してます。

Windowsの方々は、あまりコマンドから操作すること無いと思うので、良さそうなコマンドをいくつか紹介します。

他にこのコマンドいいよっていうのがあれば教えて下さい!

 

・git stash / git stash pop的な

gitだと、今更新中の内容を

git stash

とすることで一旦退避することができます。

退避した修正内容は

git stash pop

とすることで、戻すことができます。

作業を中断して別の作業を始める時なんかに非常に便利です。

しかし、SVNにはstashコマンドなぞ用意されていないため、自分で退避する必要があり、とても手間です。

そこで、下記のようにすることで、作業内容をコマンド一発で退避できます。

svn diff --force > stash.patch
svn revert -R .

まぁ、diffの内容をpatchに落としこんで、修正内容をrevertしてるだけなんですが。。。汗

ちなみに、戻すときは

patch -p0 < stash.patch

としましょう。

なお、追加したファイルは退避できないことに注意してください。

 

・ファイルを指定してコミット

svn commit

としてしまうと、更新した全てのファイルがコミットされてしまいます。

svn commit file1 file2 ...

とすることで、ファイルを指定してコミットすることは出来ますが、1つのコマンド内でコミットするファイルを1つ1つ指定するのは面倒ですし、間違いも起きやすいですよね。間違えて途中でEnter押しちゃうと即コミットされちゃうし。。

 

SVNには変更リスト(changelist)という機能が用意されているので、それを使いましょう。

svn cl {changelist name} /path/to/addfile

とすることで、{changelist name}という名称の変更リストが生成され、指定したファイルが変更リストに加えられます。

ちなみに、私はよく以下のコマンドで特定のファイルを纏めて変更リストに追加しています。

svn st | grep "xxx" | awk '{print $2}' | xargs svn cl yyy

svn st で現在のステータスを取得し、grep で変更リストに追加したいファイルのみを絞り込んでawkで余分な部分を削って xargs svn cl で変更リストに追加、という感じですね。

grepを幾つかパイプすれば、追加したいファイルのみを絞り込むのはそう難しくはありません。

 

ちなみに、変更リストの内容は

svn st

でいつでも確認出来ますし、間違えたファイルを変更リストに加えてしまったら

svn cl --remove {changelist name} /path/to/delfile

とすれば、変更リストから除外されます(変更内容が消えたりはしないのでご安心を)

変更リストをコミットする際は

svn commit --changelist {changelist name}

とすればOKです。もちろん、-mオプションと併用してコメントも付けられます。

なお、コミットしたら変更リストは消えてしまうので、コミット後も変更リストを残したい場合は–keep-changelistsオプションをつけましょう。

他に、変更リストの修正内容を確認したいときは

svn diff --changelist {changelist name}

とすれば変更リストのファイルのみの修正内容を確認出来ます。

なお、svn commit や svn diff の –changelist オプションは –cl と短縮することが出来ます。(-clじゃないのでご注意を)

svn commit --cl {changelist name} -m "コメント"
svn diff --cl {changelist name}

のような感じですね。

 

 ・特定のファイル群の操作

上でちょろっと紹介した

svn st | grep "xxx" | awk '{print $2}' | xargs svn 〜

という書き方は、変更リスト以外にもいろいろなコマンドで使えます。

別枠にくくりだして書くほどのことでも無いかもですが、結構便利なので紹介します。

1. 未追加ファイルを追加svn st | grep ^? | awk '{print $2}' | xargs svn add

2. 削除済みファイルをSVNから削除
svn st | grep ^! | awk '{print $2}' | xargs svn rm

3. 変更リストに追加(上で紹介した内容)
svn st | grep "xxx" | awk '{print $2}' | xargs svn cl yyy

などなど

「いろいろなコマンドで」なんて言っておきながら、3つしかいい例が浮かばなかったですが、どれもよく使うので良しとしましょう(笑

 

 

とりあえず以上。また良いネタがあれば追加します。

 


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事