Subversion リポジトリのバックアップとレストア

CentOS 上でのSVN(Subversion)リポジトリを新しいサーバに移動する必要があったのでその簡単な方法の備忘録です。
手順は現行サーバーのリポジトリをバックアップ(dump)して、それを新サーバーでレストア(load)するだけです。

1. リポジトリのバックアップ

# svnadmin dump /var/www/svn/projects > projects.dump

2. リポジトリのレストア
※ レストアの前に、こちらの手順で予めサブバージョンのインストールとレポジトリを作成しておきます。

# svnadmin load /var/www/svn/projects < projects.dump

TotoiseSVN コミットされた日時でチェックアウト

TotoiseSVN Subversion でソースコード管理を行っています。

新たなソースをリポジトリからチェックアウトすると、デフォルトの設定ではファイルのタイムスタンプがチェックアウトの日時になってしまいます。

TotoiseSVN のチェックアウトで取得したファイルのタイムスタンプをコミットされた日時で行うためには、設定ファイルを編集します。

その方法は:
1) TotoiseSVN setting の General 設定から Subversion の Subversion configuration file: の Edit ボタンをクリックします。
2) メモ帳でコンフィグファイルが開かれます。その中で use-commit-times = yes の行を探してコメント(行頭の#)を外します。
3) 保存します。

Subversion でソースコード管理

仕事でもプライベートでもプログラムを書いているとソースコードの版(バージョン)をフォルダで分けたりしている。前々からソースコード管理ツールを使えばいいんだよなと気にはなっていたものの手軽さからフォルダごとコピーして日付を振ったりしていました。今日は少し時間がとれたので Subversion サーバーを CentOS 6.5 にインストールしました。

subversion と dav_svn を組み合わせれば、http サーバーを利用して subversion のリポジトリにアクセスが出来るようになり、Windows から TortoiseSVN や AnkhSVN を利用して Windows Explorer や Visual Studio から利用出来るので便利です。

インストール手順:

CentOS 6.5:

———————————————

1. subversion のインストール
# yum install subversion
# yum install mod_dav_svn
2. ソースコード管理用のリポジトリの作成

ここでは、projects というリポジトリを作成します。

# mkdir /var/www/svn
# cd /var/www/svn
# svnadmin create projects
# chown -R apache.apache projects
# chcon -R -t httpd_sys_content_t projects
3. /etc/httpd/conf.d/subversion.conf の編集

subversion.conf が /etc/httpd/conf.d に作成されているので以下の内容を作成。(コメントアウトすれば良いと思います。)

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /path/to/passwdfile
      Require valid-user
   </LimitExcept>
</Location>

これで、http://server-address/repos/projects という URL でリポジトリを参照することができます。

Windows:

———————————————

1. TortoiseSVN のインストール
  •  http://tortoisesvn.net/downloads.html から 32bit 版 か 64bit 版を自分のOSに合っているものをダウンロード。また、日本語版もあります。
  •  ダウンロードした msi ファイルを実行してインストール。

以上で準備は完了です。

2. Subversion リポジトリにソースコードを追加

D:Projects フォルダにソースコードが置いてあるので、これを Subversion リポジトリに追加してソースコード管理が行えるようにします。

  •  Windows エクスプローラーから D:Projects フォルダを選択して右クリック。
  •  TortoiseSVN – Import… メニューを選択
  •  Import ダイアログの URL of repository に http://server-address/repos/projects を入力
  •  OK ボタンをクリックすると、Import が実行されます。進捗状況が表示されます。
  •  Import Finished! が表示され、リストビュー内に “Completed At revision: 1” が表示されていると思います。
  •  OK ボタンをクリック
3. Subversion リポジトリからソースコードを取得(チェックアウト)

リポジトリに追加したソースコードはサーバー上にリビション:1としてあります。ソースコードを編集するにはリポジトリからソースコードの最新版をローカルに取得します。このことをチェックアウトといいます。

  •  ローカルのソースコードは先ほどインポートしたフォルダでも、別の場所でもかまわないので、Windows エクスプローラーで適当なフォルダを選択し、右クリックします。
  •  SVNCheckout… メニューを選択
  •  Checkout ダイアログの URL of repository に http://server-address/repos/projects/foo など取得するソースコードの場所を入力(または […] ボタンをクリックして Repository Browser で選択)
  •  Checkout ダイアログの Checkout directory に D:Workspacefoo などローカルのフォルダを入力(または […] でフォルダを選択)
  •  OK ボタンをクリック
  •  Checkout Finished! が表示されたら OK ボタンをクリック
3. 編集を Subversion リポジトリへ反映(コミット)

編集が終わったら変更結果をリポジトリへ反映します。このことをコミット、またはチェックインといいます。

  •  編集したファイル、またはフォルダを Windows エクスプローラーで選択して右クリック
  •  SVNCommit… メニューを選択
  •  Commit ダイアログの Changes made には変更されたファイルの一覧が表示されます。Message には覚え書きを入力します。
  •  OK ボタンをクリック
  •  Commit Finished! が表示され、リストビュー内に “Completed At revision: 2” が表示されていると思います。
  •  OK ボタンをクリック

以上です。