Subversion で Web サイトのソースコードを管理しているのだが、サーバー切り替えに伴いリポジトリを引っ越したので手順を記録しておく。
移転元
引っ越し元のリポジトリを書き出す。
1 | svnadmin dump /var/www/svn/リポジトリ > /tmp/ダンプファイル.dump |
移転先
移転先のサーバーにリポジトリを作成し、コピーしておいたダンプファイルを復元
1 2 3 | svnadmin create /var/www/svn/リポジトリ svnadmin load /var/www/svn/リポジトリ < ダンプファイル.dump chown apache. -R /var/www/svn/リポジトリ |
リポジトリの引っ越し自体はとても簡単だった。
次に、コミット時の自動設定を反映していく。
レビューサイトに自動書き出し
Web サイトのデータを管理しているので、コミット時にレビューサイトに自動書き出しを行っている。
まずはレビューサイトに trunk をチェックアウトしておく。
1 2 | svn checkout file:///var/www/svn/リポジトリ/trunk /var/www/レビューサイト chown apache. -R /var/www/レビューサイト |
post-commit 設定
1 | vi /var/www/svn/リポジトリ/hooks/post-commit |
1 2 | #!/bin/sh LANG=en_US.UTF-8 /usr/bin/svn update /var/www/svn/リポジトリ/trunk /var/www/レビューサイト |
※コミットするファイル名に日本語が含まれていると動作しなかったため、環境変数を追加した。
1 2 | chown apache. /var/www/svn/リポジトリ/hooks/post-commit chmod 755 /var/www/svn/リポジトリ/hooks/post-commit |
コメントを再編集可能にする
1 2 3 | cp /var/www/svn/リポジトリ/hooks/pre-revprop-change{.tmpl,} chown apache. /var/www/svn/リポジトリ/hooks/pre-revprop-change chmod 755 /var/www/svn/リポジトリ/hooks/pre-revprop-change |
Perl スクリプトの不具合対応
レビューサイトの CGI 実行時に「End of script output before headers」エラーが発生して動かないものがあった。公開用サイトにアップしたら正常に動くため、原因が分からないままだった。
移転前は Perl のパスに「#!/usr/local/bin/perl --」と連続ハイフンを付けてお茶を濁して動かしていたが、引っ越しに伴い本格的に調査。結果、チェックアウトしたファイルの改行コードがWindows(DOS)形式になっていたことが原因だという事が分かった。(vi で CGI ファイルを開いたとき、ステータスに [noeol][dos] と表示される。改行コードが CRLF のファイルで発生する模様。)
vi 上で「:set ff=unix」を実行して改行コードを修正したところ、動くようになった。
TortoiseSVN で CGI ファイルのプロパティには「svn:executable」に「*」と、「svn:eol-style」に「native」を設定することで回避できるそう。
TortoiseSVN の設定変更
ローカルにチェックアウトしたフォルダで、TortoiseSVN ⇒ Relocate(再配置)から、移転後のリポジトリを設定する。
コメント