Subversion

CVSに変えてそろそろこちらに移行したいなーと思っていました。

インストール

まずhttp://subversion.tigris.org/project_packages.htmlhttp://subversion.tigris.org/svn_1.2_releasenotes.htmlからsubversion-1.2.3.tar.gzをダウンロードしました。またhttp://www.oracle.com/database/berkeley-db.htmlより、Berkeley DBをダウンロードします。

tar xzvf db-4.3.28.tar.gz
cd db-4.3.28/build_unix
../dist/configure --enable-compat185 

後々めんどくさいことしたくない場合は、

../dist/configure --enable-compat185 --prefix=/usr
make
make install

引数の--enable-compat185はBerkeley DB 1 との互換性を保ちます。またleopardの場合は

../dist/configure --enable-compat185 --prefix=/usr

としてやりました。 distで./configureをたたくと下記のエラーがでますので注意してください。

Berkeley DB should not be built in the top-level or dist directories

では/etc/ld.so.conf.dのファイルに/usr/local/BerkeleyDB.4.3/libを追加して、ldconfigしておきます。ついでに/usr/local/apache2/libも追加しておきました。ではApacheのインストールにしたがって、WebDAV用にインストールしておきます。終わりましたら、Subversionです。3/28現在1.4.6ですね。

tar xzvf subversion-1.2.3.tar.gz
cd subversion-1.2.3
./configure --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2
--with-berkeley-db=/usr/local/BerkeleyDB.4.3
make
make install

INSTALLをみていると、autoconf 2.50 or newer (Unix only)とあるので、whichやfindでしらべておきます。apache2.2ですとconfigureでBerkeleyのところでエラーがでました。subversion1.3でも同じでした。ちなみにこんなエラーです。

configure: error: APR-UTIL was installed independently, it won't be
 possible to use the specified Berkeley DB

この時、フォルダにaprとapr-utilがいるので、--with-aprと--with-apr-utilを外して再度やってみましょう。aprとapr-utilがない場合は、subversion-deps-1.4.6.tar.gzをダウンロードして解凍しておきましょう。 aprは1.2ではなく0.9です。するとmakeで

configure: error: APR-UTIL was installed independently,

ってエラーがでました。しょうがないので、

apr/include/apr.h

を開き

#define APR_HAS_SENDFILE 0

にしてmakeしました。 またlibtool 1.4 or newer (Unix only)なので、これもあれば、--versionでバージョンを確認しておきます。またhttp://www.webdav.org/neon/よりneonという HTTP and WebDAV client libraryをダウンロードしておきます。と思ったら、

The source code is included with the latest Subversion tarball

とあり、たしかにneonのディレクトリがあるので、いらないのかな? 新しいバージョンと入れ替えておけばいいのでしょうか。とりあえず、インストールしてみたがよくわかりません。

tar xzvf neon-0.25.3.tar.gz
cd neon-0.25.3
./configure
make
make install

ではhttpd.confを見てみると

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

が追加されていたので、念のためldconfigとhttpdを再起動しておきました。ではxinetdに登録しておきます。

useradd -m -d /home/svn -s /bin/false svn

でユーザを作っておいて

/usr/local/bin/svnadmin create /home/hoge/svn-rep

でレポジトリを作ったら、

chown -R svn:svn /home/hoge/svn-rep

で権限を変更しておきます。ではxinetd.dで

# default: on
# description: svnserve
service svn
{
      socket_type     = stream
      wait            = no
      user            = svn
      server          = /usr/local/bin/svnserve
      server_args     = -i -r /home/hoge/svn-rep
      log_on_failure  += USERID
      disable         = no
}

このserver_argsの-iはinetd モードで、-rはサービスを提供するディレクトリのルートです。sshでやる場合は、-i -r /home/hoge/svn-repを-i -t -r /home/hoge/svn-repにして、

chmod -R 770 /home/hoge/svn-rep
chmod g+s /home/hoge/svn-rep/db

では、httpでやるには

<Location /svn>
 DAV svn
 SVNPath /usr/local/svn-rep
 AuthType Basic
 AuthUserFile /etc/auth.conf
 AuthName test
 require valid-user
</Location>

/etc/auth.confはApacheの認証を参照して、作成しておきましょう。認証は好みで。この例のBasicもどうかと思いますが。sslでなければ、せめてDigest承認ぐらいに。ここで SVNPath /usr/local/svn-repとしてますが、1つのレポジトリに複数のディレクトリがる場合は、片方を直すとどちらもバージョンがあがっていきます。これがいやな場合は、たとえば

mkdir /usr/local/svn-rep
/usr/local/bin/svnadmin create /usr/local/svn-rep/rep1
/usr/local/bin/svnadmin create /usr/local/svn-rep/rep2

としておいて、(権限はapacheからみえるように)

<Location /svn>
 DAV svn
 SVNParentPath /usr/local/svn-rep
 AuthType Basic
 AuthUserFile /etc/auth.conf
 AuthName test
 require valid-user
</Location>

にしておき、http://localhost/svn/rep1とかでアクセスします。

では、Apacheを再起動しましょう。

Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: libsvn_repos-1.so.0: cannot open shared object file: No such file or directory

とエラーがでる場合は、/etc/ld.so.conf.dに/usr/local/libを追加して(libsvn_repos-1.so.0が/usr/local/libにいれば)、ldconfigしておきましょう。また

Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_xml_get_cdata

とでる場合は、Apacheのコンパイルで--enable-dav=yesを指定しましょう。後はパーミッションはきちんとしておきましょう。Apacheを起動しているユーザで参照できるように。 クライアントは http://tortoisesvn.tigris.org/download.htmlからOfficial version for Win2k/XPとLanguage Packsを落としました。TortoiseSVNです。http://tortoisesvn.bluegate.org/Help/dailyuseguide.htmlにわかりやすい使い方がありました。インストール後、追加したい場合は、exploreからそのフォルダで右クリックして、インポートします。プロジェクト名は

プロジェクト名/trunk
プロジェクト名/branches
プロジェクト名/tags

とするみたいです。svnserveの場合は、(サーバのIPが仮に192.168.1.2として)

svn://192.168.1.2/project1/trunk

みたいな感じでリポジトリURLを指定します。sshの場合は、そのユーザ(hogeuser)でsshのssh2にしたがってauthorized_keysを作り、

svn+ssh://hogeuser@192.168.1.2/home/hoge/svn-rep/project1/trunk

とします。間違っていると

No access allowed to this repository

Permission denied

とエラーが表示されます。httpの場合は、

http://192.168.1.2/svn

svnserve.conf

リポジトリを作成しましたら、その中にconf/svnserve.confがあります。

# [general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are "write", "read",
### and "none".  The sample settings below are the defaults.
# anon-access = read
# auth-access = write

となってますが、

[general]
 anon-access = none
 auth-access = write

にしてます。頭のスペースは要りません。anonはanonymousで不特定の場合です。 後はユーザを指定してやります。#password-db = passwdの#をとり、同じディレクトリにあるpasswdファイルを編集します。

[users]
hoge = hogepass
hoge2 = hogepass2

リポジトリ作成

/usr/local/bin/svnadmin create /home/hoge/svn-rep

チェックアウト

svn checkout svn://192.168.1.2:3690/project1/trunk

checkoutはcoでもよい。

python

pythonから呼び出したい場合に。subversion/bindings/swig/INSTALLを読んでみて、

wget http://switch.dl.sourceforge.net/sourceforge/swig/swig-1.3.25.tar.gz
tar xzvf swig-1.3.25.tar.gz
cd swig-1.3.25
./configure --with-python=/usr/local/bin/python
make 
make install 

subversionのソースを展開したディレクトリで、

make install-swig-py

すると/usr/local/lib/svn-pythonに2つディレクトリがあるので、

cp -a * /usr/local/lib/python2.4/site-packages/
ldconfig

cvs2svn

http://cvs2svn.tigris.org/よりダウンロードしましょう。

windows

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 より svn-win32-1.4.2.zipをダウンロードしました。あとは展開します。 ここではクライアントで使います。あとは文字化けしますので、変数をセットしておきます。

set APR_ICONV_PATH=展開したフォルダ\iconv

binにsvn.exeがいますので使いましょう。 プロキシの設定をする場合は、

C:\Documents and Settings\ユーザ名\Application Data\Subversion

にserversファイルを作成し、

[global]
# http-proxy-exceptions = *.exception.com, www.internal-site.org
# http-proxy-host = defaultproxy.whatever.com
# http-proxy-port = 7000
# http-proxy-username = defaultusername
# http-proxy-password = defaultpassword
# http-compression = no
# No http-timeout, so just use the builtin default.
# No neon-debug-mask, so neon debugging is disabled.
# ssl-authority-files = /path/to/CAcert.pem;/path/to/CAcert2.pem

このあたりを修正します。

TIPS

Can't open activity db:Permission Denied

レポジトリ/dav
レポジトリ/db

の権限を見直してみましょう。

コミット時のメール

Subversionで日本語ログ入りのcommitメールを送る
Subversionコミット時メール送信とTracチケットの自動クローズ

編集時にロック

svn:needs-lockをプロパティに設定します。 編集時にロックの取得を必須にするには

リンク

http://kobe.cool.ne.jp/oppama/misc/subversion2.html
http://idm.s9.xrea.com/ratio/2005/01/14/000169.html
http://www.gside.org/Gentoo/subversion/subversion.html
ソースコードの管理をしよう(Subversion編)
SubversionとTracでファイル管理の“迷宮”から脱出

参考書籍

コメント

  • #comment

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-11-08 (土) 04:29:00 (5668d)