pre-commit文件放到 SVN repository下hooks目录里
需要设为可执行
Linux环境下的
#!/bin/sh
REPOS="$1"
TXN="$2"
TYPE="$3"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
if test -z "$TYPE" ; then
TYPE="-t"
fi
#$SVNLOOK log -t "$TXN" "$REPOS" | \
# grep "[a-zA-Z0-9]" > /dev/null || exit 1
look() {
$SVNLOOK "$@" "$TYPE" "$TXN" "$REPOS"
}
LOGMSG=`look log`
if echo $LOGMSG | grep '.' > /dev/null; then
NOT_EMPTY=1
else
echo "Message must be filled">&2
exit -2
fi
#echo $REPOS >&2
#look changed>&2
#exit 1
IN_BRANCH=0
#echo $REPOS | grep -iE "^/var/www/svn/test/branches"
CHANGES=`look changed`
#echo $CHANGES >&2
for f in $CHANGES ;do
#echo $f>&2
echo $f | grep -iE "^branches/br130609" > /dev/null
if [ $? -eq 0 ]; then
IN_BRANCH=1
fi
done
#echo $IN_BRANCH>&2
#exit 1
if [ $IN_BRANCH -eq 1 ]; then
echo $LOGMSG | grep -iE "^(new|add|improve|refactor|ci|fix|modify)\s*:\s*[0-9\.]+[mh]\s*:.+" >/dev/null
CHECKRE1=$?
echo $LOGMSG | grep -iE "^(bug|bugfix)\s*:\s*[0-9\.][mh]\s*:\s*((BUMBLEBEE-[0-9]+)+,*)+\s*:.*" >/dev/null
CHECKRE2=$?
if [ $CHECKRE1 -ne 0 ] && [ $CHECKRE2 -ne 0 ]; then
echo " Wrong format, please write according to:http://wiki.cntnsoft.int/pages/viewpage.action?pageId=20643842 ">&2
exit -3
fi
fi
if look changed | grep '^A ' | sed -r 's#^A +##' | grep -iE '\.(ncb|opt|plg|suo|aps|bsc|idb|obj|pcc|pch|pdb|sbr|exe|tmp|ilk|o|so|a|class|zip|log)$|~$|^(Debug|Release|Debug_Ts|Release_Ts|Thumbs\.db)$|(^\.)' 1>&2 ; then
echo "Including not permitted file: ncb|opt|plg|suo|aps|bsc|idb|obj|pcc|pch|pdb|sbr|exe|tmp|ilk|o|so|a|class|zip|log">&2
exit 1
fi
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
#commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
# All checks passed, so allow the commit.
exit 0
分享到:
相关推荐
pre-commit 脚本是SVN钩子(hook)机制的一个组成部分,它允许开发者或管理员在提交更改前执行一系列检查,确保提交的数据符合特定的标准和要求。如果预提交检查失败,则整个提交过程会被取消,从而避免了不符合要求的...
### SVN钩子脚本pre-commit实现删除权限控制 #### 一、引言 Subversion(SVN)是一款广泛使用的版本控制系统,在许多企业及个人开发者中备受青睐。SVN提供了强大的版本管理和协同工作能力,帮助团队高效地管理源...
在 Subversion 中,pre-commit Hook 是在客户端提交事务之前被调用的 Hook,用于检查事务的合法性和正确性。如果 Hook 程序返回 0,则事务将被提交;否则,事务将被中止。 在本例中,我们使用 pre-commit.bat 脚本...
### SVN提交代码时格式知识点详解 #### 一、SVN提交日志(Log)的重要性 版本控制系统如SVN(Subversion)对于软件开发团队而言是非常重要的工具之一,它可以帮助团队成员协同工作并管理项目的源代码历史记录。而在...
svn的pre-commit钩子是SVN版本控制系统中的一种钩子脚本,它在提交更改到版本库之前被触发。如果pre-commit钩子脚本执行失败(即返回非零值),则不允许提交。利用这个机制,可以实现强制提交注释信息的功能。 知识...
本文将详细介绍如何在Windows和Linux环境下配置SVN以实现提交时强制添加注释的功能,并深入解析相关脚本命令的工作原理。 #### Windows环境下的配置 在Windows环境下,实现SVN提交时强制添加注释的方法是通过编写...
预提交(pre-commit)钩子是在用户提交更改之前运行的脚本,如果脚本返回非零退出状态,提交将会被阻止。我们可以创建一个预提交钩子,检查提交日志是否为空,若为空则返回错误。 2. 创建钩子脚本:在VisualSVN ...
- 该脚本通过`svnlook log`命令获取待提交事务的日志信息,并检查日志是否为空或太短。 - 如果日志为空或少于5个字符,则提交会被拒绝,并提示用户必须填写日志。 ### BugFree和SVN的整合 除了上述的功能外,还...
- 钩子脚本必须放置在SVN服务器的仓库目录下的`hooks`子目录内,命名为`pre-commit.bat`,因为SVN服务器在用户尝试提交时会自动执行该脚本。 - 脚本需要有执行权限,通常在Unix/Linux系统上是可执行权限,在Windows...
实现方式通常是检查待提交事务的log message,并在不满足条件时阻止提交。 总结来说,这两个`pre-commit.bat`脚本是Subversion仓库管理的重要组成部分,它们可以通过定制化逻辑来增强仓库安全性和一致性。使用这样...
通过上述脚本,我们可以确保Subversion用户在提交时遵循良好的日志编写习惯,同时允许他们在必要时对已提交的日志进行修订,从而维护版本控制系统的整洁性和可追溯性。这些自定义钩子脚本是Subversion灵活性的体现,...
通过修改这个脚本来检查日志消息,我们可以强制用户在提交时提供非空的日志。 例如,你可以创建一个Python或bash脚本,检查`--message (-m)`或`--file (-F)`参数是否被正确使用,并且日志消息不为空。如果未提供...
6. 文件格式检查:你可以编写 hook 脚本来验证即将提交的文件是否符合项目规范,例如,检查代码风格、文件编码、文件大小等。这有助于保持代码库的整洁和一致性。 7. 数据备份:`post-commit` hook 可用于在每次...
在VisualSVN Server中,可以使用预提交(Pre-commit)钩子来实现这一功能。预提交钩子是在用户提交变更到版本库之前执行的脚本,如果脚本返回非零退出状态,则提交会被阻止。按照以下步骤设置: a. 打开VisualSVN...
在提供的文件`pre-revprop-change.bat`中,我们可以看到一个Windows环境下的SVN服务器钩子脚本,这个脚本通常位于SVN服务器的`hooks`目录下。当尝试修改历史属性时,SVN会执行这个脚本,如果脚本返回非零值,修改将...
描述"Subversion提交时必须填写注释,否则不允许提交"进一步强调了注释在版本控制中的重要性。良好的注释有助于跟踪代码历史,理解每一次变更的目的和影响,这对于团队协作和后期的代码维护至关重要。 在Windows上...
本篇将详细讲解如何利用SVN的Hook脚本来限制用户删除文件,并强制他们在提交时添加注释。 首先,我们关注的是`pre-commit`钩子,这是一个在提交发生之前运行的脚本。在Windows环境中,通常将`pre-commit.tmpl`模板...
预提交钩子(pre-commit hook)是一种在提交操作发生之前运行的脚本,可以用来检查提交是否符合某些规则,如日志消息长度限制等。 ##### 1. 创建预提交钩子脚本 在SVN仓库的`hooks`目录下,创建`pre-commit.tmpl`...
- `commit-hooks`、`pre-commit`、`post-commit`:这些是钩子脚本的路径,用于在提交前后执行自定义操作。 - `interactive-auth-parameters`:定义交互式认证参数,如是否记住密码、认证方式等。 - `log-encoding`:...