バージョン管理 - Subversion - コピーで苦労した話
- 1. 概要
- 2. 状況
- 3. リポジトリの移動
- 4. アクセス設定
- 5. オチ
1. 概要
これ、解決方法が、「Subversion」の話ではなかったので、ここに書くべきか迷いましたが、「Subversion」のリポジトリをコピーしたときに苦労した話ですので、とりあえず、ここに書いて、機会があれば「Apache」あたりにも書くかもしれません。
2. 状況
えっと、まぁ、プラットフォームは「CentOS release 6.4」なのです。
「なんでそんな古いものを?」とは、詮索しないでくだされ、なにかと事情があるのです。
これを、「Subversion」のサーバとして使っておるのですが、当初あまり、ディスクの容量や配置を考えておりませんでした。
ある日、気づくと、ディスク容量が、下記のようなことになっておる。
$ df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_svn1-lv_root
50G 47G 43M 100% /
tmpfs 2.0G 72K 2.0G 1% /dev/shm
/dev/sda1 485M 36M 424M 8% /boot
/dev/mapper/vg_svn1-lv_home
407G 33G 353G 9% /home
このバージョンの「CentOS」は、ウェブサーバが「Apache2.2」で、ドキュメントルートが
DocumentRoot "/var/www/html"
てなことになっておりまして、まぁ、なんとなく
/var/www/
の下にリポジトリを作っておったわけだ。
するとまぁ、「/var」は、「/」の直下にありまして、気づくと残りは、ほぼなくなっております。
「Subversion」の圧縮率が高いせいか、それでも、数年はなんともなく過ぎておりましたがね。
なくなってくると、少し、大きなものをコミットしようとするとエラーになる。
エラーのダイアログを取り忘れましたが、機会があれば、またとります。
バランスの悪いもので、「/home」の下は、まだまだずいぶんと余っております。
ということで、同じマシン内ではありますが、引っ越そうということにしました。
3. リポジトリの移動
引っ越し元のリポジトリのディレクトリを
/var/www/svn/hogehoge
としましょう。
引っ越し先を
/home/svn/mine/fugafuga
とします。
「cp -R」なんてのもありますが、ここは安全策で、「svnadmin」のコマンドを使います。
svnadmin hotcopy /var/www/svn/hogehoge /home/svn/mine/fugafuga
「dump」して「load」ちゅうのもあるらしいですが、「hotcopy」だと稼働したまま、移動できますので、楽ですし、ほぼ、ワンアクションですわな。
少し時間がかかるのは、覚悟します。
今回、試しにやってみたのは、ソース中心のリポジトリで、リビジョンが「5,000」にも満たなかったので、10分足らずでコピーできました。
所有権は、そのまま移動しないようで・・・。
chown -R apache:apache /home/svn/mine
4. アクセス設定
新規のリポジトリをアクセスできるようにしてやらねばなりませんな。
で、
/etc/httpd/conf.d/
に新規のファイルを置いて、下記のように書きます。
<Directory "/home/svn/mine">
Options Followsymlinks
Order Allow,Deny
Allow from all
</Directory>
<Location /mine>
<IFModule dav_module>
DAV svn
SVNParentPATH /home/svn/mine
</IFModule>
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /var/www/svn/passwd
Require valid-user
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
Order Allow,Deny
Allow from all
LimitXMLRequestBody 20000000
</Location>
「password」ファイルは、以前のリポジトリのものをそのまま使いまわしております。
$ apachectl configtest
Syntax OK
ちゅうことで、「apache」を再起動するわけです。
apachectl restart
で、とりあえず、リポジトリブラウザで見てみるべと思って、見ようとしたら・・・。

てなことになる。
5. オチ
まぁ、あれこれ、設定ファイルをいじったり、シンボリックリンクをはってみたり、いろいろとしたあげく。
こんなオチですわ。
この場合
/home/svn/mine
だけでなく、その親ディレクトリの所有権まで、「apache」に変えなければ、ならなかったのです。
すなわち
chown apache:apache /home/svn
これで、やっと移動先のリポジトリにアクセスできるようになりました。
以前のリビジョンの記録まで、綺麗に残っているので安心しました。
落ち着いたら、元のディレクトリを消して、「/」の要領を復活させます。
|
|