遅れ過ぎながら、自宅にSubversionをインストールするべく、まずはVMwareで実験。OSはFedora Core 6 test3。
$ cd ~/download
$ wget http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
$ wget http://www.apache.org/dist/httpd/httpd-2.0.59.tar.gz
$ wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
$ wget http://downloads.sleepycat.com/db-4.2.52.tar.gz
$ cp ./subversion-1.4.0.tar.gz /usr/local/src/
$ cp ./httpd-2.0.59.tar.gz /usr/local/src/
$ cp ./neon-0.25.5.tar.gz /usr/local/src/
$ cp ./db-4.2.52.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./subversion-1.4.0.tar.gz
$ tar zxvf ./httpd-2.0.59.tar.gz
$ tar zxvf ./neon-0.25.5.tar.gz
$ tar zxvf ./db-4.2.52.tar.gz
$ cp -a ./httpd-2.0.59/srclib/{apr,apr-util} ./subversion-1.4.0/
$ cp -a ./neon-0.25.5 ./subversion-1.4.0/neon
$ cd ./db-4.2.52/build_unix/
$ ../dist/configure
$ make
$ sudo make install
$ cd ../../subversion-1.4.0
$ ./configure --with-berkeley-db=/usr/local/BerkeleyDB.4.2
$ make
$ make check
$ sudo make install
make checkが異常に時間がかかったけれど、そこそこあっさり味に入った。付属品のバージョンはINSTALLファイルに書いてあるのに出来るだけ合わせた。OSが空っぽだと、Pythonとかも入れないと駄目みたい。
さて、お次はTracでも入れるかな。
[追記]
せっかくインストールしたので、基本コマンドを一通りやってみた。
$ cd ~/tmp
$ mkdir ./test_repository
$ svnadmin create ./test_repository
$ mkdir ./test_work
$ echo "Hello" > ./test_work/practice01.txt
$ svn import -m "Message" ./test_work file:///$HOME/tmp/test_repository
$ rm -r ./test_work
$ svn checkout file:///$HOME/tmp/test_repository ./test_work
$ cat ./test_work/practice01.txt
$ ls -la ./test_work/
$ echo "World" >> ./test_work/practice01.txt
$ svn diff ./test_work
$ svn commit ./test_work/practice01.txt -m "commit file"
$ svn update ./test_work
$ echo "Hello Subversion" > ./test_work/practice02.txt
$ svn add ./test_work/practice02.txt
$ svn commit ./test_work/practice02.txt -m "commit add file"
$ svn mkdir ./test_work/child_dir
$ svn commit ./test_work/child_dir -m "commit add dir"
$ svn delete ./test_work/practice02.txt
$ svn commit ./test_work -m "commit delete file"
$ svn move ./test_work/practice01.txt ./test_work/child_dir/practice01.txt -m "commit delete file"
$ svn commit ./test_work -m "commit move file"
$ svn info ./test_work
[追記 2]
外から使えるようにするための手順を追加。HTTP使うのはまた今度。とりあえずはsvnserveで。下の手順では/svnの中にtestリポジトリを作成している。
$ su -
$ mkdir /svn
$ cd /svn
$ mkdir ./test
$ svnadmin create ./test
$ cd ./test/conf
$ vim ./svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
$ vim ./passwd
[users]
cloned = clonedpassword
$ svnserve -d -r /svn/test
$ exit
TortoiseSVNとか外部からアクセスするときは「svn://hogehoge.jp/svn/test」になる。当たり前だけど、先に何かしらをインポートしてないとアクセスしても「対象リビジョンがない」と怒られる。
svnserve止めるときは、普通にkillすれば良い…はず。
[追記 3]
一つのファイルを以前のリビジョンに戻す場合は以下のようにやる。
$ svn merge -r 31:30 ./hoge.txt
$ svn commit ./hoge.txt -m "revert SVN rev30"
[追記 4]
あるリビジョンからブランチを作成する。
$ svn cp -r50 file:///home/cloned/repository/test/trunk file:///home/cloned/repository/test/branches/branche-name -m "message"
[追記 5]
リポジトリを引っ越しする
$ mkdir svnbackup
$ svn-backup-dumps.py {reposdir} svnbackup
$ svnadmin create {reposdir}
$ svnadmin load {reposdir} < svnbackup/svn.xxxxxx-xxxxxx.svndmp
svn-backup-dumps.py は tools/server-side/svn-backup-dumps.py あたりにある。