Asial Blog

Recruit! Asialで一緒に働きませんか?

今さら聞けないSubversion使い方まとめ

カテゴリ :
バックエンド(プログラミング)
タグ :
Tech
SVN
皆さん、こんばんは。笹亀です。

ご挨拶が遅くなりましたが、明けましておめでとうございます。
今年も良いブログを皆さんにご提供できるように頑張ります!
先日のニュースでAppleCEOのスティーブ・ジョブスさんが病気で休暇に入るとの心配なニュースをみました。急なことでとても心配です。1日も早い復帰をお祈り致します。

さて、本日はSubversion(svn)の基本コマンドからよく使うコマンドやこだわりの使用方法まで一気にご紹介します。いろんなサイトを観て確認しながら使うことが多いので、よく使うコマンドやこだわりの方法をメインにご紹介できればと思います。
まずは基本コマンドの紹介です。

ーーーーーーーーーーーーーーーーーーーーーーーー
■基本コマンド
1.バージョン管理されているモジュールを取り出す
  1. svn co [リポジトリ先] [チェックアウトする場所]

2.バージョン管理下に追加する
  1. svn add [バージョン管理前のファイルorフォルダ]

3.バージョン管理下の変更内容を更新する
  1. svn up [バージョン管理前のファイルorフォルダ]

4.バージョン管理下から削除する
  1. svn del [バージョン管理前のファイルorフォルダ]

5.バージョン管理下の状態を確認する
  1. svn st [バージョン管理前のファイルorフォルダ]

6.変更内容をコミットする
  1. svn ci -m 'コミットコメント' [コミットするファイルorフォルダ]

■よく使うコマンド
1.管理下にしないファイルやディレクトリはignoreで管理外にする
例)ignoredir内に格納されているファイルすべてをバージョン管理外に設定する
  1. svn propset svn:ignore "*" ignoredir

例)バージョン管理下のdatabases.ymlをバージョン管理外にする方法
  1. svn del databases.yml
  2. svn propset svn:ignore "databases.yml" ./
  3. svn ci ./

2.バージョン同士の差分をチェックする
  1. svn diff -r 1:2 [バージョン管理下のファイル]
  2.  ※バージョン1と2の差分を確認できます。

3.更新されたファイルや変更済みのファイルを一覧で確認する
  1. svn st -u [バージョン管理下のファイルorフォルダ]

4.最新のバージョン管理下のファイルに戻す
  1. svn revert [バージョン管理下のファイルorフォルダ]

■こだわり使用方法
1.コミット時のコメントをエディターを使ってコミットする
svnでコミットする際に「svn ci -m 'hogehoge' ***」の形式で通常はコメントを記載してコミット処理を行います。svnでコミットする際のコメントを自分の好きなエディターを使用して記載してコミット処理を行うこともできます。
ここではvimを使用する例を記載します
  1. export SVN_EDITOR="vim"
  2. svn ci [バージョン管理下のファイルorディレクトリ]
  3.  →実行後にエディタが起動し、保存するとコミットできます。

コマンド実行後、エディターが起動する

※自分の環境はMacなのですが、Macの場合はホームディレクトリ.bash_profileファイル(~/.bash_profile)に「export SVN_EDITOR="vim"」を設定しておくと起動時に設定をしてくれて便利です

2.ファイル管理をしているときにコミット時に自動でリビジョン番号、日時、ユーザ名を付与するための設定。
svnの設定ファイルを編集する必要があります。
 ※Macの場合はホームディレクトリ(~/)の.subversion/config
[miscellany]にコメントされている設定を有効にする
  1. [miscellany]
  2. enable-auto-props = yes

[auto-props]に次のように設定を追加します。
また、特定の拡張子のファイルだけに適用するようにするのが一般的です。
  1. [auto-props]
  2. *.php = svn:keywords=Id Date Author Rev URL
  3. *.css = svn:keywords=Id Date Author Rev URL
下記の画像のようにコミットする前(バージョン管理下前)の「@version SVN:$Id:$」が、コミット時(バージョン管理下後)には「@version SVN:$Id: test.action.class.php 1769 2011-01-19 10:37:01Z sasa $」のように変換されます。

コミット前:


コミット後:


※すでにコミットしてあるファイルには反映されないようですので、既存ファイルに適用する場合は、一度バージョン管理下から削除してから新規追加という作業が必要になります。

ーーーーーーーーーーーーーーーーーーーーーーーー

社内では既にGitの風が吹いており、svnもそろそろ終わりな感じになってきております。
それでも、まだまだちゃんとsvnの使い方は理解しておく必要がありそうです。まとめてみると再確認する機会にもなり、とても勉強になりました。

皆さんもGitの波に飲まれる前にsvnの存在を忘れないように使い方などをご確認いただけたら幸いでございます。