バージョン管理 - 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
 で、とりあえず、リポジトリブラウザで見てみるべと思って、見ようとしたら・・・。
「TortoiseSVN」-「Unable to connect to a repository」

 てなことになる。

5. オチ

 まぁ、あれこれ、設定ファイルをいじったり、シンボリックリンクをはってみたり、いろいろとしたあげく。  こんなオチですわ。  この場合

/home/svn/mine
 だけでなく、その親ディレクトリの所有権まで、「apache」に変えなければ、ならなかったのです。  すなわち

chown apache:apache /home/svn
 これで、やっと移動先のリポジトリにアクセスできるようになりました。  以前のリビジョンの記録まで、綺麗に残っているので安心しました。  落ち着いたら、元のディレクトリを消して、「/」の要領を復活させます。
ハイスピードプラン神戸養蜂場メンズミレットStar Naming Gift