移転しました。

Subversion1.4.0をインストール

遅れ過ぎながら、自宅に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

# Make repository
$ mkdir ./test_repository
$ svnadmin create ./test_repository

# Import
$ mkdir ./test_work
$ echo "Hello" > ./test_work/practice01.txt
$ svn import -m "Message" ./test_work file:///$HOME/tmp/test_repository

$ rm -r ./test_work

# Checkout
$ svn checkout file:///$HOME/tmp/test_repository ./test_work
$ cat ./test_work/practice01.txt
$ ls -la ./test_work/

# Diff
$ echo "World" >> ./test_work/practice01.txt
$ svn diff ./test_work

# Commit
$ svn commit ./test_work/practice01.txt -m "commit file"

# Update
$ svn update ./test_work

# Add file
$ echo "Hello Subversion" > ./test_work/practice02.txt
$ svn add ./test_work/practice02.txt
$ svn commit ./test_work/practice02.txt -m "commit add file"

# Add directory
$ svn mkdir ./test_work/child_dir
$ svn commit ./test_work/child_dir -m "commit add dir"

# Delete file
$ svn delete ./test_work/practice02.txt
$ svn commit ./test_work -m "commit delete file"

# Move 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"

# Information
$ 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 あたりにある。