Subversionに関するTips。
タグやブランチを作成するにはsvn copyでtrunkをコピーする。 例えば、現在のtrunkの状態にtags/release-1.0という名前を付けるには次のようにする。
svn copy svn://repos/someproject/trunk svn://repos/someproject/tags/release-1.0 -m "version 1.0"
バージョン管理されているファイルに属性を設定するには、svn propsetを使う。
svn propset svn:keywords "URL Rev Id Date Author" sample.c
他にも属性に関連するコマンドには次のようなものがある。
リポジトリをリネームする場合は、
という手順で変更できる。
svnadmin create repo_new svnadmin dump repo_old | svnadmin load repo_new rm -rf repo_old
なお、svnadmin dump/loadではリポジトリのパーミッション、設定ファイル類はコピーされないので、忘れずにコピーする
chmod -R g+w repo_new cp -ipr repo_old/conf/* repo_old/conf/*
あるバージョンのSubversionで管理されているリポジトリを、別のバージョンのSubversionで管理されている環境に移動する場合は、svnadmin dump/loadを使い次の手順で行う。
svnadmin dump /path/to/repos > dumpfile
svnadmin load /path/to/repos < dumpfile
定形のリポジトリを自動的に作成する目的で作成したスクリプト。 このスクリプトは、リポジトリを作成したあと次のような初期ディレクトリ構成をリポジトリにインポートする。
/ |-- README |-- tags/ |-- branches/ `-+ trunk/ |-- src/ `-- bin/
また、設定ファイルのテンプレート.svnserve.confをコピーし、作成したリポジトリの設定ファイルに上書きする。
#!/bin/bash # usage: makerepo.sh reponame REPONAME=$1 REPOSDIR='/var/repos' TEMPDIR='/tmp/repolayout' TEMPLOGFILE="$REPOSDIR/tmp.txt" LOGMESSAGE='imports initial directory layout' SVNREPOFSTYPE='fsfs' SVNREPOCREATE="/usr/bin/svnadmin create --fs-type $SVNREPOFSTYPE" SVNREPOIMPORT="/usr/bin/svn import --file $TEMPLOGFILE" # # リポジトリを作成する # echo "creates repository '$REPONAME'" $SVNREPOCREATE $REPOSDIR/$REPONAME # # 初期ディレクトリ構成(trunk, branches, tags, README)を作成する # echo "creates initial directory layout" mkdir -p $TEMPDIR cd $TEMPDIR mkdir trunk branches tags : > README # # trunk以下のディレクトリを作成する # echo "make source directory(y/n)" read makesourcedir if [ "$makesourcedir" = 'y' ] then cd trunk mkdir bin src cd - fi ls -lR # # 初期ディレクトリ構成をリポジトリにインポートする # echo "imports initial directory layout to repository" echo $LOGMESSAGE > $TEMPLOGFILE $SVNREPOIMPORT . file://$REPOSDIR/$REPONAME rm -rf /tmp/repolayout/ rm $TEMPLOGFILE # # リポジトリの設定ファイルのテンプレートをコピーする # echo "copies repository configuration file" cp $REPOSDIR/.svnserve.conf $REPOSDIR/$REPONAME/conf/svnserve.conf echo "finished."