個人的によく使う svn コマンドの使い方まとめ

No Photo

イメージ

横浜は久しぶりの雨!こんにちは、nakamura です。

今やプログラマー、コーダーには欠かせない感のあるバージョン管理システムですが、弊社では subversion を使っています。今回はそんな subversion について、GUI も確かに便利だけどコマンドラインで使えると、作業の効率がぐっと上がりますよ!というお話しです。

サブコマンド、オプションの調べ方

svn コマンドは man ページもあるにはありますが大した情報は載っておらず、サブコマンドとして help を指定して実行すると詳細な説明が見れます。

shell > svn help
使用方法: svn <サブコマンド> [<オプション>] [<引数>]
Subversion コマンドラインクライアント, バージョン 1.6.12.
特定のサブコマンドに関するヘルプを読みたいときは 'svn help <サブコマンド>' と打ってください。
プログラムのバージョンや RA モジュールを参照するには 'svn --version' と、バージョン番号のみを参照するには 'svn --version --quiet' と、打ってください。

ほとんどのサブコマンドはファイルとディレクトリの一方または両方を引数にとり、ディレクトリでは再帰的な処理をします。このようなコマンドに引数が与えられなかった場合、デフォルトでは、カレントディレクトリで再帰的な処理をします。

利用可能なサブコマンド:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)

Subversion はバージョン管理用のツールです。
さらに詳しい情報は、http://subversion.tigris.org/ をご覧ください。

更に help の後に調べたいサブコマンドを指定すると、そのサブコマンドの詳細を見ることができます。

shell > svn help add
add: ファイルやディレクトリをバージョン管理下におき、それらをリポジトリに追加予定の状態とします。次回のコミットでそれらは追加されます。
使用方法: add <パス>...

有効なオプション:
  --targets <ARG>          : ファイル <ARG> の内容をサブコマンドの引数に追加 して渡します
  -N [--non-recursive]     : 廃止予定です。--depth=files または --depth=immediates を使用してください
  --depth <ARG>            : 操作の対象を深さ <ARG> ('empty'、'files'、'immediates'、'infinity' のいずれか) に限定します
  -q [--quiet]             : 何も表示しないか、要約情報のみを表示します
  --force                  : 強制的に処理を実行します
  --no-ignore              : デフォルトや svn:ignore 属性が無視するような項目を無視しません
  --auto-props             : 自動的な属性設定を有効にします
  --no-auto-props          : 自動的な属性設定を無効にします
  --parents                : 途中の親ディレクトリを追加します

グローバルオプション:
  --username <ARG>         : ユーザ名を <ARG> と指定します
  --password <ARG>         : パスワードを <ARG> と指定します
  --no-auth-cache          : 認証情報をキャッシュしません
  --non-interactive        : 対話式の認証用プロンプト表示をしません
  --trust-server-cert      : accept unknown SSL server certificates without prompting (but only with '--non-interactive')
  --config-dir <ARG>       : ディレクトリ <ARG> からユーザ設定ファイルを読み込みます
  --config-option <ARG>    : set user configuration option in the format: FILE:SECTION:OPTION=[VALUE]
                             For example: servers:global:http-library=serf

実際のコマンド使用例

ではでは、個人的によく使う svn コマンドの使用例です。勝手に分類してご紹介します。

作業コピー操作系

作業コピーのチェックアウト。

svn co http://example.com/subversion/repository/trunk /var/www/working_copy

作業コピーの更新。

svn up /var/www/working_copy

ファイルの追加。--parents オプションを付けるとファイルまでのディレクトリで追加されていないものがあれば一緒に追加してくれます。

svn add --parents /var/www/working_copy/htdocs/index.html

変更点のチェックイン(コミット)。-m オプションはコミット時のコメントを指定するのに使います。

svn ci -m "index.html を追加。" /var/www/working_copy/htdocs/index.html

作業コピー上での変更を取り消す。

svn revert /var/www/working_copy/htdocs/index.html

作業コピーのクリーンアップ。

svn cleanup /var/www/working_copy

作業コピーの切り替え。

svn sw http://example.com/subversion/repository/branches/20100908 /var/www/working_copy

--relocate オプションで別リポジトリへの切り替えが可能です。(リポジトリの移行時など)

svn sw --relocate http://old.example.com/subversion/repository/trunk http://new.example.com/subversion/repository/trunk /var/www/working_copy

リポジトリ操作系

trunk をコピーして新しい branch を作成。

svn cp -m "2010/09 作業分の branch 作成。" http://example.com/subversion/repository/trunk http://example.com/subversion/repository/branches/201009

trunk を branch に移動。

svn mv -m "2010/09 時点での trunk を branch に移動。" http://example.com/subversion/repository/trunk http://example.com/subversion/repository/branches/201009

古い branch を削除。

svn rm -m "一年前の branch を削除。" http://example.com/subversion/repository/branches/200909

情報参照系

作業コピーの情報を確認。

svn info /var/www/working_copy

変更履歴を表示。

svn log /var/www/working_copy/htdocs/index.html

リポジトリと差分のあるファイル一覧を表示。

svn stat -u /var/www/working_copy/

リポジトリとの差分を表示。

svn di /var/www/working_copy/htdocs/index.html

-r オプションで指定したリビジョンとの差分を見れます。

svn di -r 10 /var/www/working_copy/htdocs/index.html

svn:mergeinfo や svn:ignore などの属性情報を表示。

svn pl -v /var/www/working_copy

branch から trunk の作業コピーにマージ系

リビジョンを指定してマージ。

svn merge -c 10,12,18 http://example.com/subversion/repository/branches/201009 /var/www/working_copy

-r でリビジョン範囲を指定できます。

svn merge -r 10:18 http://example.com/subversion/repository/branches/201009 /var/www/working_copy

適用されていない変更点を全てマージ。

svn merge --reintegrate http://example.com/subversion/repository/branches/201009 /var/www/working_copy

ちなみに --dry-run オプションでマージ対象のファイルの一覧が見れます。

svn merge --dry-run --reintegrate http://example.com/subversion/repository/branches/201009 /var/www/working_copy

終わりに

ざっくりとよく使う svn コマンドの使用例を挙げてみました。他にもサブコマンド、オプションはたくさんあるので svn help で確認しながら使ってみてください。

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

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