SVN 钩子:禁止提交文件和服务器自动更新
服务器端自动更新脚本,编辑仓库的 hooks/post-commit 内容如下:
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG="zh_CN.UTF-8"
/usr/bin/svn update /var/www
脚本需要 +x 和设置属主(建议)才能执行:
sudo chown www-data:www-data hooks/post-commit
sudo chmod +x hooks/post-commit
/var/www 是 apache 的 htdocs 目录。另外,钩子脚本也是以 www-data 身份执行的,所以先使用:
sudo su www-data -c "svn co http://your.svn/path /var/www"
检出代码并保存认证信息。
禁止用户提交临时文件、图片缩略图文件等,编辑仓库的 hooks/pre-commit 内容如下:
#!/bin/sh
export LC_ALL=zh_CN.UTF-8
REPOS="$1"
TXN="$2"
TYPE="$3"
if test -z "$TYPE" ; then
TYPE="-t"
fi
Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
look() {
$SVNLOOK "$@" "$TYPE" "$TXN" "$REPOS"
}
#if look log | grep '.' > /dev/null ; then :; else
# echo "必须填写提交日志!" >&2
#exit 1
#fi
disexts='.(bak|exe|tmp|lib|o|obj|log|rar|zip|7z|gz|tar|tgz)$'
disfiles='(^|/)(Thumbs.db|desktop.ini)$'
disdirs='(^|/)(_notes|.DS_Store)/$'
disdot='(^|/)(.)'
diss="$disexts|$disfiles|$disdirs|$disdot"
if look changed | grep '^A ' | sed -r 's#^A +##' | grep -iE $diss 1>&2 ; then
echo "不允许提交上面所列出文件或目录。n这些文件可能是图片的缩略图、临时或备份文件和目录。n请撤销增加上述文件或目录后,再提交到版本库!">&2
exit 1
fi
All checks passed, so allow the commit.
exit 0
注释掉的那段代码是强制要求提供修改日志。
最后,感谢鸡蛋壳和mOo两位同学。
发表评论