注目キーワード
  1. AMP
  2. SEO
  3. PWA

SVNを別マシンに移行した話


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を普段利用していても、構築となるとハードル高く感じると思うので、まずは全体概要からイメージしてもらえればと思います。

最新情報をチェックしよう!