subversionのインストール
yum install subversion
設定
sudo mkdir -p /var/svn/repos/ cd /var/svn sudo chmod 1777 repos ls -ld repos drwxrwxrwt 2 root root 4096 5月 21 10:41 repos/
リポジトリ
作成
svnadmin create /var/svn/repos/hoge
始めのimport
mkdir -p /tmp/sample mkdir -p /tmp/sample/trunk mkdir -p /tmp/sample/branches mkdir -p /tmp/sample/tags (*)/tmp/sample/trunk下に、sampleプロジェクトのファイル群を配置します。 svn import /tmp/sample file://localhost/home/svn/repos/sample/trunk -m "first import"
チェックアウト
svn co file://localhost/var/svn/repos/tmpmodule/trunk tmpmodule <==trunkの下をtmpmoduleというディレクトリ名の下にチェックアウトする A tmpmodule/tmp.c A tmpmodule/Makefile リビジョン 1 をチェックアウトしました。
ステータス
svn status
コミット
svn commit -m "hogehoge "
エキスポート
svn export file://localhost/var/svn/repos/tmpmodule/trunk tmpmodule <==タグは展開しない。よってコミットできない。
svnserve
起動
svnserve -d -r (ルートに見せるディレクトリ)
svnserve -d -r /var/svn/repos
/etc/*/rc.local もしくは
/etc/init.d/svnserve を作成し
/etc/rc.d/rc[3-5].d/svnserveのリンクにする
設定
| genenalの項目 | 内容 |
| anon-access | 匿名ユーザのアクセス |
| auth-access | 認証済ユーザのアクセス |
| password-db | ユーザ名とパスワードのリスト |
| ***-accessの指定値 | 内容 |
| none | いかなるタイプのアクセスも不許可 |
| read | そのリポジトリに対するreadアクセスのみ許可 |
| write | リポジトリに対するread/writeアクセス許可 |
password-db
[users] hoge = hogehoge <=== ユーザ名 "hoge" のパスワードは"hogehoge"
サーバ
- 最初にimportで認証したユーザでDB登録されると
その後、password-dbからそのユーザを外した場合、
dbを更新できなくなってしまうので注意
スタンドアローン
svnserve 起動/停止スクリプト
svnユーザで起動する場合
始めの3行のコメントはchkconfig用。詳しくはこちら
pukiwiki_cat /etc/init.d/svnserve #! /bin/sh # chkconfig: 345 98 20 # description: Subversion server # processname: svnserve
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/svnserve
DAEMON_OPTS="-d -r /var/svn/repos"
NAME=svnserve
DESC="Subversion server"
USER=nsxi
PIDFILE=/var/run/$NAME.pid
test -x $DAEMON || exit 0
#. /lib/lsb/init-functions
. /etc/rc.d/init.d/functions
start_puppet() {
# start-stop-daemon --start --quiet --pidfile $PIDFILE \
# --user $USER --group $USER --exec $DAEMON -- $DAEMON_OPTS
sudo -u $USER $DAEMON $DAEMON_OPTS 2>/dev/null
if [ "$?" -eq 0 ]
then
pidof $DAEMON > $PIDFILE
return 0
fi
return 1
}
stop_puppet() {
# start-stop-daemon --stop --quiet --pidfile $PIDFILE \
# --user $USER --group $USER --signal 9 --exec $DAEMON
kill -9 `cat $PIDFILE 2>/dev/null` 2>/dev/null
[ "$?" -ne 0 ] && return 1
rm -f $PIDFILE
return 0
}
status_puppet() {
killall -0 $DAEMON 2>/dev/null
return "$?"
}
case "$1" in
start)
# log_begin_msg "Starting $DESC"
echo -n $"Starting ${DESC}: "
start_puppet
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failure
# log_end_msg 0
echo
;;
stop)
# log_begin_msg "Stopping $DESC"
echo -n $"Shutting down ${DESC}: "
stop_puppet
RETVAL=$?
[ $RETVAL -eq 0 ] && success || failure
# log_end_msg 0
echo
;;
restart|force-reload)
# log_begin_msg "Restarting $DESC"
echo -n $"Restarting ${DESC}: "
stop_puppet
if [ $? -ne 0 ]; then
failure ; echo ; exit 0
fi
sleep 1
start_puppet
[ $? -eq 0 ] && success || failure
# log_end_msg 0
echo
;;
status)
status_puppet
[ $? -eq 0 ] && echo "$DESC is alive" || echo "$DESC is dead"
echo
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
xinetd経由
servicesファイル
$ cat /etc/services |grep svn svnserve 3690/tcp # Subversion <== 「svn」を「svnserve」に変える svnserve 3690/udp # Subversion
/etc/xinetd.d/svnserve
$ cat /etc/xinetd.d/svnserve # default: on # description: subversion server.
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
user = root
wait = no
server = /usr/bin/svnserve
server_args = -i -r /var/svn/repos
log_on_failure += HOST USERID
only_from = 192.168.0.0/24 127.0.0.1 <== クライアント制限する場合
}
chkconfig
$ chkconfig svnserve off
$ chkconfig --list |grep svn
svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off <=== 全部offとなっていること
svnserve: on <==xinetdの方はonになっていること
xinetdのリスタート
$ /etc/init.d/xinetd restart