Subversionサーバー移行手順

はじめに

Solarisで立てていたSubversionサーバーをNASのLinuxに移すことになりました。個人的にはGitにしたかったんですが、まあ、コードをガリガリ書くような環境じゃないのでいいかな……。

とにかく、svnadminコマンドとか初めて触ったのでおかしなところがあったら指摘プリーズ。

概要

  1. 移行元バックアップ
  2. 移行先Subversionサーバー立ち上げ
  3. バックアップから復元
  4. 新リポジトリの設定
  5. 旧リポジトリのコミット禁止

1. 移行元バックアップ

移行元サーバーにて以下のコマンドを実行する。(「>」は半角にして下さい)

svnadmin dump 移行元ディレクトリ > ダンプファイル

2. 移行先Subversionサーバー立ち上げ

移行先サーバーにてリポジトリ格納用のディレクトリを作成し、Subversionサーバーを立ち上げる。

ex.:

mkdir /share/MD0_DATA/svn
svnserve -d -r /share/MD0_DATA/svn`

3. バックアップから復元

ダンプファイルからリポジトリを復元する。 2. 移行先Subversionサーバー立ち上げ で作成したディレクトリにて以下のようにコマンドを実行する。(「<」は半角にして下さい)

mkdir 移行先ディレクトリ
svnadmin create 移行先ディレクトリ/
svnadmin load --bypass-prop-validation 移行先ディレクトリ < ダンプファイル

4. 新リポジトリの設定

ダンプファイルには設定までは含まれていないようなので、新リポジトリにて再設定する。
移行先ディレクトリ/conf/svnserve.conf を以下のように編集する。

編集前:

# password-db = passwd

編集後:

password-db = passwd

さらに、移行元ディレクトリ/conf/passwd というファイルを 移行先ディレクトリ/conf/passwd にコピーする。

5. 旧リポジトリのコミット禁止

コミット開始をフックするテンプレートスクリプトがあるのでそれを利用する。
移行元ディレクトリ/hooks にて以下のコマンドを実行。

cp start-commit.tmpl start-commit
chmod +x start-commit

start-commit の内容を以下のように編集する。コミット時にcommit.lockという名前のファイルが存在すると異常終了するスクリプトである。

#!/bin/sh
REPOS="$1"
USER="$2"

if [ -e "$REPOS/commit.lock" ];
then
  echo "Service temporary unavailable." 1>&2
  exit 1
fi
exit 0

その後、commit.lock ファイルを作成する。

touch 移行元ディレクトリ/commit.lock

コミット実行時に Service temporary unavailable. 以外のエラーになる場合は start-commit の一行目を #!/bin/bash に変更する。


参考

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中