1. はじめに
SVN用に使用していたマシンのOSサポートが切れるため、SVNを別マシンへ移行した時のお話です。
※実際に移行したのは2022年9年で、Apache等のバージョンは現在の最新ではありません
※移行先のOSはWindows10です。
ただ、全体の流れ自体は変わらないので、概要の理解には役に立つと思います。
2. 事前調査
■SVNのバージョン
SVNを別マシンへ移行するにあたり、バージョンも新しくしています。
今回は以下のバージョンへ移行しました。
・Apache Subversion 1.6.9
移行後
・Apache Subversion 1.13.0
■アップデート内容の確認
Versionを新しくするにあたり、変更点や移行への影響を確認してます。
細かい変更点は色々ありましたが、主に運用面で影響がありそうな点は以下2点でした。
- ①ワーキング・コピーの形式が変更(v1.6 → v1.7)
- 同じマシンでSVNをアップデートした時に影響が出るようで、ローカルの作業コピーをチェックアウトすれば解決できるとのこと。
今回はマシン移行でSVNの接続先も変わるため、チェックアウトも必須であり、結果影響はなかったです。 - ②BDBの保存形式がサポート終了(v1.7 → v1.8)
- 「Berkeley DB」の形式がサポート終了(壊れやすく、非推奨となっている様子)。
一般的にはファイルシステムを使った「FSFS」形式が主流で、この形式だったので影響なし。
3. 環境構築
移行先のマシンへ、SVNを構築します。
大まかな流れは以下の通りです。
①各コンポーネントのダウンロード
- Apache HTTPサーバ
- Subverion
- VCランタイム
②各コンポーネントのインストール
- Apache HTTPサーバ
- Subverion
- VCランタイム
③リポジトリルートの作成
SVNのルートディレクトリを作成する
④Apache起動パラメータ(httpd.conf)の設定
Timeoutを設定する
Timeout 1800
⑤管理コンソール起動のバッチファイル作成
ユーザ作成など、SVNを管理するためのコンソール起動ファイルを作成
⑥ユーザ認証用パスワードファイルを作成
空ファイル(passwd)を作成する。
※httpd.confでApacheの構成を変えて、Windows認証やLDAP認証に変えることも可能
⑦ユーザアカウントの作成
⑤の管理コンソールより、SVNを使用するユーザを作成する
⑧SVNリポジトリーの作成
⑤の管理コンソールより、SVNリポジトリーを作成する
⑨Apacheを起動し、動作確認
ブラウザからSVNのURLを実行し、作成したユーザでリポジトリへアクセス出来ることを確認
⑩ApacheをWindowsサービスとして登録
コンピュータを再起動しても、自動的にSVNが起動するように設定
※具体的な手順は別で載せようと思います(長くなるので・・・)
4. データ移行
■dumpファイルの取得
移行元のマシンにあるSVNのリポジトリやコミット履歴を取得します。
コマンドプロンプトを起動し、SVNコマンドのパスが通っている場所へ移動後、以下コマンドを実行します。
svnadmin dump [移行元リポジトリ] > [保存先]¥fileName.dump
■dumpファイルの転送
取得したdumpファイルを移行先マシンへ転送します。
サイズが大きいので圧縮するか、同一ネットワークなら管理者権限で直接ファイルを取得します。
■dumpファイルのロード
移行先マシンへdumpファイルをロードします。
移行先マシンでコマンドプロンプトを起動し、以下コマンドを実行します。
svnadmin load [移行先リポジトリのパス] < [dumpファイル]
ここまで実行すれば、移行作業は完了です。
あとはSVNからリポジトリ情報をチェックアウトしてください。
5. 注意点
■チェックアウト時のタイムアウト
コミットされているファイルのサイズが数GBあると、チェックアウトに時間がかかりタイムアウトすることがあります。
その場合、Apacheのhttp.confでタイムアウトの設定を追加すれば回避可能です。
Timeout 1800
※単位は秒なので、1800は30分です
6. SVNのユーザ管理
■ユーザを登録する
SVN管理コンソールを起動し、以下コマンドで登録する。
htpasswd [パスワードファイル名] [ID]
例) htpasswd passwd TESTID
■ユーザを削除する
SVN管理コンソールを起動し、以下コマンドでユーザを削除する。
ちなみに、ユーザを削除してもコミット履歴は残る。
htpasswd -D [パスワードファイル名] [ID]
例) htpasswd -D passwd TESTID
7. 終わりに
今回の手順は2022年9月に実施していて、その後現在(2023年12月)まで運用してますが、特に問題は発生していません。SVNを普段利用していても、構築となるとハードル高く感じると思うので、まずは全体概要からイメージしてもらえればと思います。