サブバージョンとは、ファイルの履歴も管理できるファイル共有システムです。通常は略してSVNと呼ばれています。また管理されているフォルダ一式単位を、リポジトリと呼ばれます。
Subversion Official Site
Subversionでは以下のパッケージを必要とします。またここではデータの保存ファイルシステムとして、BerkerayDBも紹介してありますが、実用にはFSFS(Unix標準のファイルシステム)を利用することをおすすめします。なので、BerkerayDBのインストールはご希望で。
先に、sqliteをインストールと、apr&apr-utilのインストールをしておく。
最新のlibserfをインストールするのに、sconsというビルドツールが必要になる。
# wget http://prdownloads.sourceforge.net/scons/scons-2.5.1.tar.gz # tar zxvf scons-2.5.1.tar.gz # cd scons-2.5.1 # python setup.py install
# wget http://prdownloads.sourceforge.net/scons/scons-3.0.1.tar.gz
これより新しいserf(ver.1.3.8など)だと、インストール手順が面倒な上、subversion で認識しない。
# wget http://serf.googlecode.com/files/serf-1.2.1.tar.bz2 # tar xjf serf-1.2.1.tar.bz2 # cd serf-1.2.1 # ./configure # make # make install
Subversionの最新では、1.3.4以降が要求される。
# wget https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2 # tar xjf serf-1.3.9.tar.bz2 # cd serf-1.3.9 # scons APR=/usr/local/apr APU=/usr/local/apr OPENSSL=/usr/local/ssl PREFIX=/usr/local/serf # scons install
※最新の apache httpd をインストールしておかないとエラーになる場合がある。
# wget http://ftp.tsukuba.wide.ad.jp/software/apache/subversion/subversion-1.9.5.tar.gz # tar zxvf subversion-1.9.5.tar.gz # cd subversion-1.9.5 # ./configure --prefix=/usr/local/svn \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr \ --with-apxs=/usr/local/apache2/bin/apxs \ --with-serf=/usr/local/serf \ --without-berkeley-db \ --without-swig \ --with-lz4=internal \ --with-utf8proc=internal # make # make install
その後リンク設定
# ln -s /usr/local/svn/bin/* /usr/local/bin/ # ln -s /usr/local/svn/libexec/* /usr/local/apache2/modules/ # echo /usr/local/svn/lib > /etc/ld.so.conf.d/usr_local_svn_lib.conf # ldconfig
インストール状況の確認
# svn --version
もし/usr/local/lib/libsvn_ra_neon-1.so.0: cannot restore segment prot after reloc: Permission denied などのエラーがでたら、権限の変更を行います。
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/lib/libsvn_ra_neon-1.so.0
まずはapache2の設定ファイルにSVNのmod設定を行います。
# emacs /usr/local/apache2/conf/httpd.conf #---------------------------------------------------# # Subversion System Define # #---------------------------------------------------# LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn/> DAV svn SVNAutoversioning on SVNListParentPath On SVNParentPath /usr/local/svn SVNIndexXSLT /svnindex.xsl AuthType Basic AuthName "Secured Development Repository" AuthUserFile /usr/local/apache2/htpasswd AuthGroupFile /usr/local/apache2/htgroup AuthzSVNAccessFile /usr/local/svn/access_file order allow,deny Deny from all Require group subversion Satisfy any </Location>
このhtpasswdは、以下のコマンドを用いてユーザーを登録します。
# cd /usr/local/apache2 # htpasswd htpasswd <user-name>
グループファイルは、emacs 等のエディタで修正します。
# emacs /usr/local/apache2/htgroup subversion: bill ken eva
# emacs /usr/local/access_file [groups] all-valid-member = bill,ken,eva # root Repository [/] * = @all-valid-member = r # test Repository [test:/] * = @all-valid-member = rw #paint Repository [paint2:/] * = ken = rw bill = r
※Auth Nameに指定した文字列が、大部分のブラウザのパスワードダイアログに表示されます。
※基本認証用のユーザー&パスワードファイルはapacheのものを利用します。
上記の設定ファイルで、/usr/local/svn 以下フォルダはすべてsvnリポジトリという指定をしたので、ここでは、testというリポジトリを作成します。
# mkdir /usr/local/svn # chown -R apache:apache /usr/local/svn # svnadmin create /usr/local/svn/test
Subversionでは、独自の認証でリポジトリ毎に設定できます。各リポジトリディレクトリの直下の設定ファイルを修正してセキュリティを設定してください。
# cd /usr/local/apache2/svn/test/ <- testというリポジトリに移動 # emacs ./conf/svnserve.conf anon-access = none <- 匿名ユーザーはアクセス禁止 auth-access = write <- 承認ユーザーは読み書き可能 password-db = /usr/local/svn/test/htpasswd
利用者側では、エクスプローラ組み込みタイプと、Eclipseに導入するSubclipseタイプがある。お勧めはTortoiseSVNだ。
エクスプローラタイプのTortoiseSVN(Windows用)
上記、サイトで本体とランゲージパック(日本語)をダウンロードしてインストールするだけで、クライアント側はすぐに使える。
余談、Tortoiseは亀の意味だが、発音はトータス。日本で亀といえばタートル(Turtle)だが、これは米国の影響が大きい。実際、英国では主に海や川に棲んでいる大型種をTurtle、陸生のものを主にTortoiseと呼ぶが、米国では亀全体をTurtleと呼んでいる。
SubversionのクライアントソフトをYumなどを利用して導入すると良いだろう。
# yum install subversion
<Test Project の Workingのコピー>
※下記でtestというフォルダがカレントに作成される。
# svn co http://localhost/svn/test
<Test Project の チェックイン>
オプション-mでコメントを記入している。必須。
# cd /target/path/to/ # svn ci -m 'It is comment for Revision'
リポジトリのバックアップでHDDの容量を気にしないのであれば、svnadmin dumpが便利である。
# svnadmin dump /usr/local/svn/project > project.dump
このコマンドで、projectリポジトリを1つのファイルにまとめられるので、このファイルを利用して他のリポジトリにload して復活させる。
# svnadmin load /usr/local/svn/project < project.dump
また、リビジョンの部分的な保存などを行うことも可能。
もし特定のディレクトリにロードしたい場合には
# svnadmin load --parent-dir subdir/prj2 /usr/local/svn/project < project.dump
SubversionはCで記述されているので、Pythonから利用するにはC言語とのコネクターをインストールする必要があります。
PySVN 公式ページ
# wget http://pysvn.barrys-emacs.org/source_kits/pysvn-1.6.0.tar.gz # tar zxvf pysvn-1.6.0.tar.gz # cd pysvn-1.6.0/Source # python setup.py configure # make # cd Tests # Test pysvn by running make
TortoiseSVN は Open Office や Mozilla で使われるスペルチェッカモジュールを使用できます。スペルチェッカをインストールしている場合、ログメッセージを記入する際の属性の設定(tsvn:projectlanguage)でどのスペルチェッカを使用するか決定します。
国コードのリスト
StatSVNはSubversionの利用状況をグラフで表示する機能を持つ。大変面白いので、ぜひSubversionと一緒に導入してほしい。
# cd /usr/local/src # wget http://transact.dl.sourceforge.net/sourceforge/statsvn/statsvn-0.4.1-source.zip # unzip statsvn-0.4.1-source.zip
antを使ってコンパイルするため、apache antのページを参照して導入をしておいてから下記のコマンドを実行する。
# cd statsvn-0.4.1 # ant # cp dist/statsvn.jar /usr/local/svn
# cd /co-tmp # svn co file:///usr/local/svn/test (別サーバーの場合、svn://server/svn/test) # cd test <- Check out したWorkingフォルダ # svn log -v --xml > logfile.log # mkdir /usr/local/apache2/htdocs/report <- 公開フォルダを作成 # cd /usr/local/apache2/htdocs/report # java -jar /usr/local/svn/statsvn.jar \ <- statsvnの位置を指定 /co-tmp/project/logfile.log \ <- 上記で作成したlogfileの位置を指定 /co-tmp/project <- 上記でCheckoutしたフォルダ
この後、http://server/report で表示される。
#!/bin/bash SRC_PATH="/usr/local/svn/checkout" STATSVN_PATH="/usr/local/svn/util/statsvn" JAVA="/usr/local/jdk/bin/java" REP="/proj/trunk/mydb" # do svn update $SRC_PATH$REP svn log --xml -v svn://localhost/rep$REP > $STATSVN_PATH$REP/svn.log cd $STATSVN_PATH$REP $JAVA -mx256m -jar $STATSVN_PATH/statsvn.jar $STATSVN_PATH$REP/svn.log $SRC_PATH$REP
http://reviewmonk.sourceforge.net/
コマンドプロンプト
for /f "tokens=*" %d in ('dir /b/s/a:dh *.svn') do rmdir /q/s "%d"
Linux or Cygwin
find . -name ".svn" -exec rm -rf {} \;
リバースプロキシ経由で SSL を LBで復号している場合に、複数コマンドの実行時にhttps と、http が混合してしまうことが問題になるため、http 側にもリダイレクトで https に飛ばす必要がある。
現在:対応不明
マイクロソフト Visual Sourcesafe はすでにサポートも終了しており、過去のプロジェクトで利用していた場合、SVNに移植する必要がある。VSSはWindowsサーバーで稼働され、Visual Studio 2005などのクライアントから利用できる。
Visual Studio 2005 評価版の Team Suiteには、Visual Source Safeが同梱されているため、ここからVSSサーバーのインストールを行う。但し評価版には添付されていないようだ。
http://tatsuya.info/pukiwiki/?Windows/Subversion%A4%C7%A5%D0%A1%BC%A5%B8%A5%E7%A5%F3%B4%C9%CD%FD
http://www-aos.eps.s.u-tokyo.ac.jp/~takagi/SubversionMemo.html
SSL関係についてわかりやすい説明
ルートSVNフォルダの一覧表示に関するバグ
access fileの設定の説明