Subversionの導入(UNIX)

Subversion 1.2.0をVine Linux 3.1にインストールし、 ローカルで使ってみた&Apache WebDAV経由でWindowsPCに公開した作業手順のメモです。

用意するもの
●Berkeley DB (BDB) 4.x (オプション)
Subversionでは「ファイルシステム」としてBDBとFSFSが選べますが、 過去の安定性の経緯から、FSFSがよく使われるようです。 FSFSしか使わないのなら、Berkeley DBは不要です。
●Apache 2.0.x (オプション)
WebDAV経由でリモート公開を行う場合に必要になります。 つまり、UNIXマシンローカルでしか使わない場合や、 Subversion独自のアクセスサーバであるsvnserveを使ってリモート公開する場合には、 Apache Web Serverは不要です。
●neon 0.25.0 (C言語用のWebDAVライブラリです)
●libxml2 2.6.x (neonのインストールに必要になります。)
●Python 2.4.x

インストール手順
Subversionのインストールは、

./configure
make
make install

でOKです。Apache Web Serverを使うモードでコンパイルした場合には、 Apacheのhttpd.confに次の2行が自動的に追加されます。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

サーバ側の設定

  1. まず、Apacheのhttpd.confをさらに編集します。WebDAVの公開設定です。

    <Location /svndav/repo1>
        DAV svn
        SVNPath /usr/local/share/svnroot/repo1
        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 localhost 192.168.1.
        </LimitExcept>
    </Location>
    

    SVNPathで指定するパスは、必ずリポジトリであること (そのパスのディレクトリのなかに、formatというファイルがあること)。 つまり紹介の順番が逆になってしまいますが、 後述のリポジトリ作成の作業で、リポジトリの場所になるディレクトリをSVNPathに指定します。
    または、複数のリポジトリを1か所にまとめて配置している場合に、 それらの親ディレクトリを指定することも可能です。 この場合は、次のようにSVNParentPathを使った設定になります。

    <Location /svndav>
        DAV svn
        SVNParentPath /usr/local/share/svnroot
        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 localhost 192.168.1.
        </LimitExcept>
    </Location>
    

    ここで重大な注意! httpd.confの編集時に、

    Alias /svndav "/usr/local/share/svnroot"
    

    のようにAlias行を追加して、リポジトリをWebから見れるようにしてはいけません。 これを書くと、一見Webブラウザからは見ることができますが、 svn listなどのリポジトリへのアクセスコマンドで、 エラー"301 Moved Permanently"の原因になります。
  2. これでApacheを起動し、Webブラウザで 「http://localhost/svndav/repo1/」 にアクセスしたとき、「Revision 0: /」と画面に表示されればOKです。

クライアント側の設定
UNIXクライアント側の設定はそんなに沢山はありません。 ログインシェルの設定で、環境変数SVN_EDITORを定義しておきます。 これはCVSのCVSEDITORと同様、コミット時にログを書くのに使うエディタソフトを指定するものです。 例えば、ログインシェルがBashの場合、

export SVN_EDITOR='emacs -nw'

こんな感じになります。

リポジトリの新規作成
いちおう、リポジトリは/usr/local/share/svnroot をルートに、 その下にrepo1、repo2などと複数作るという構成を前提とします。

mkdir /usr/local/share/svnroot
svnadmin create /usr/local/share/svnroot/repo1

このディレクトリrepo1は事前に作っておく必要はありません(このコマンドで作られます)。 WebDAVで公開する場合、このリポジトリにはnobodyで書き込み可能である必要があります。

インポート(クライアントで実行)

mkdir test
echo hello > test/hello.txt
svn import test http://localhost/svndav/repo1/test

SVN_EDITORで指定したエディタが起動するので、ログメッセージを書いて保存します。

Adding test/hello.txt

Committed revision 1.

と出ればOK。なお、失敗したときにsvn-commit.*.tmp というファイルがカレントディレクトリに残りますが、これらは勝手に消してよいです。

リポジトリの中を見る

svn list http://localhost/svndav/repo1
svn list http://localhost/svndav/repo1/test

なお、Webブラウザでも上記のURLにアクセスすれば、内容を見ることができるはずです。

チェックアウト

rm -rf test
svn checkout http://localhost/svndav/repo1/test test

リポジトリのバックアップとリカバリ
svnadmin dump/loadコマンドを使用します。

svnadmin dump repopath > full.dmp
svnadmin dump repopath --incremental > inc.dmp
svnadmin load repopath < full.dmp

Misc. Topics Top

(first uploaded 2005/05/21 last updated 2005/07/10, URANO398)

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル