svn的賬號(hào)和權(quán)限管理是基于文件的,修改時(shí)需要更新到服務(wù)器,多有不便,可利用svn管理賬號(hào)和權(quán)限,利用svn的pos-commit 鉤子監(jiān)測(cè)賬號(hào)和權(quán)限文件變化,多個(gè)庫可共享同一賬號(hào)和權(quán)限文件。
/home/svn/conf/目錄下存放了多個(gè)庫共用的passwd和authz文件,用來控制這些庫的賬號(hào)和訪問權(quán)限,獨(dú)立的svn_admin庫中存放對(duì)應(yīng)的passwd和authz文件,有更新時(shí)自動(dòng)同步到/home/svn/conf/下。
svn_admin庫的post-commit 腳本如下:
REPOS="$1"
REV="$2"
FILE_DIR="/home/svn/conf"
UPDATE_FILE_LIST="passwd authz"
for FILENAME in $UPDATE_FILE_LIST ; do
if svnlook changed $REPOS -r $REV |grep $FILENAME >/dev/null ; then
DST_FILE=$FILE_DIR/$FILENAME
mv $DST_FILE $DST_FILE.old
svnlook cat $REPOS $FILENAME > $DST_FILE
fi
done