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