* UNIX/Subversion [#g1f8a074]
** リポジトリ生成 [#xb2d3776]
svnadmin create --fs-type fsfs リポジトリディレクトリ
~
** リポジトリ移行 [#ucc819a4]
1.3リポジトリから1.4リポジトリ等
svnadmin dump リポジトリディレクトリ > リポジトリダンプファイル
svnadmin create --fs-type=fsfs リポジトリディレクトリ
svnadmin load リポジトリディレクトリ < リポジトリダンプファイル
~
** 環境設定 [#e4b6e11f]
-ディレクトリ作成~
mkdir /etc/subversion/conf/
mkdir /etc/subversion/hooks/
mkdir /etc/subversion/hook-scripts/
~
-/etc/subversion/passwd.default~
複数リポジトリで共通で使用するpasswdファイルを用意する。~
[users]
username1 = password1
username2 = password2
username3 = password3
~
-/etc/subversion/conf/svnserve.conf~
passwd.defaultファイルを使用するように変更したsvnserve.conf。~
リポジトリ生成スクリプトでコピーする。~
realmも自動に設定できるように、置換用キーワードを埋め込んだ。~
[general]
anon-access = none
auth-access = write
password-db = /etc/subversion/passwd.default
realm = {REPOSITORY_NAME}
~
** tagsへのコミット防止HOOKスクリプト [#pa94cc7f]
-/etc/subversion/hooks/pre-commit~
pre-commit.tmplをsvnperms.pyを使用するように変更。~
また、リポジトリ生成スクリプトで使用するの置換用キーワードを埋め込んだ。~
#!/bin/sh
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" > /dev/null
if [ $? -ne 0 ]; then
echo "error: There isn't comment." >&2
exit 1
fi
/etc/subversion/hook-scripts/svnperms.py -r "$REPOS" -t "$TXN" -f {REPOSITORY_DIR}/conf/svnperms.conf -s tagrestrict || exit 1
# All checks passed, so allow the commit.
exit 0
~
-/etc/subversion/hook-scripts/svnperms.py~
スクリプト本体。~
subversionをインストールしたらどこかにあると思われる。~
cp -p どこかのディレクトリ/svnperms.py /etc/subversion/hook-scripts/svnperms.py
~
-/etc/subversion/conf/svnperms.conf~
svnperms用の設定ファイル。~
リポジトリ構成が/project-name/{trunk,tags,branches}の場合~
[tagrestrict]
.*/ = *(add,remove,update)
trunk/.* = *(add,remove,update)
tags/[^/]+/ = *(add,remove)
branches/[^/]+/.* = *(add,remove,update)
リポジトリ構成が/{trunk,tags,branches}/project-nameの場合~
[tagrestrict]
trunk/.* = *(add,remove,update)
tags/.*/ = *(add,remove)
branches/.* = *(add,remove,update)
~
** リポジトリ生成スクリプト [#f301663e]
-svnrepcr.sh~
次の処理を行うスクリプトです。~
・リポジトリ生成。~
・trunk/tags/branchesのインポート。~
・リポジトリディレクトリへ/etc/subversion/{conf,hooks}のキーワード置換とコピー。~
#!/bin/sh
### 引数チェック
if [ "$1" = "" ]; then
echo "usage : svnrepcr.sh [REPOSITORY-DIR]"
echo
echo "ex. svnrepcr.sh /var/data/svn/category/newrepository"
exit 0
fi
REPOSITORY_DIR=$1
### 環境設定
umask 0002
ETC_DIR=/etc/subversion
REPOSITORY_NAME=`basename ${REPOSITORY_DIR}`
### リポジトリ生成
svnadmin create --fs-type=fsfs ${REPOSITORY_DIR}
### リポジトリ初期登録
TEMP_DIR=`mktemp -d`
mkdir ${TEMP_DIR}/trunk
mkdir ${TEMP_DIR}/branches
mkdir ${TEMP_DIR}/tags
svn import ${TEMP_DIR} file://${REPOSITORY_DIR} -m "Initial import"
rm -rf ${TEMP_DIR}
### リポジトリ環境設定
cp ${ETC_DIR}/conf/* ${REPOSITORY_DIR}/conf/
sed "s/{REPOSITORY_NAME}/${REPOSITORY_NAME}/" ${ETC_DIR}/conf/svnserve.conf > ${REPOSITORY_DIR}/conf/svnserve.conf
sed "s:{REPOSITORY_DIR}:${REPOSITORY_DIR}:" ${ETC_DIR}/hooks/pre-commit > ${REPOSITORY_DIR}/hooks/pre-commit
chmod +x ${REPOSITORY_DIR}/hooks/pre-commit
echo "create repository done."
~
** ユーザー環境設定 [#vf2cc036]
*** 置換キーワードの設定 [#j82fea33]
-C:\Documents and Settings\user\Application\Subversion\configに次の項目を設定する。
[miscellany]
enable-auto-props = yes
[auto-props]
*.java = svn:eol-style=native;svn:keywords=Id Date Author Rev URL
この設定により、JavaDoc等に
/**
* @author $Author$
* @version $Revision$ $Date:: 2008-05-26 19:06:45 +0900 $
*/
と記述した場合、次のように置換される。
(Dateは文字化け対策のため、始めから置換した形で記述するのを推奨。)
/**
* @author $Author: user $
* @version $Revision: 1173 $ $Date:: 2008-05-26 19:06:45 +0900 $
*/
ただし、この設定はファイル新規追加時にしか効果がない。~
既にSubversion管理下のファイルに、上記の設定を反映させるにはSubversionのプロパティ設定を行う必要がある。~
~
*** Eclipse上でSubversion管理下ファイルの設定を変更する。~ [#kf1b3db8]
フォルダ、ファイルを右クリック-->チーム-->プロパティの設定~
プロパティ名 :svn:eol-style~
プロパティの内容:native~
プロパティ名 :svn:keywords~
プロパティの内容:Id Date Author Rev URL~
~
** 関連ページ [#s308afb5]
-[[Debian GNU Linux/3.1 sarge/Subversion]]