svn的賬號和權限管理是基于文件的,修改時需要更新到服務器,多有不便,可利用svn管理賬號和權限,利用svn的pos-commit 鉤子監測賬號和權限文件變化,多個庫可共享同一賬號和權限文件。
/home/svn/conf/目錄下存放了多個庫共用的passwd和authz文件,用來控制這些庫的賬號和訪問權限,獨立的svn_admin庫中存放對應的passwd和authz文件,有更新時自動同步到/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