用户提交代码的动作,对应的是pre-commit。因此,进入hook目录把pre-commit.tmpl文件名修改为pre-commit, Windows下可以修改为pre-commit.bat,这样可以让系统知道该文件是可执行文件。
打开pre-commit文件,注释或删除所有的代码,然后添加如下代码:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook; # 修改为服务器安装的subversion目录
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
exit 1
fi
exit 0
保存,退出。
给pre-commit添加可执行权限:
chmod +x pre-commit
一般来说,这样基本就够,有时候你希望配合一些行政手段,比如代码必须经过谁审核才可以提交,以下是注释不能为空,而且注释中必须有checked by zhangsan,才能提交的shell
#!/bin/sh
REPOS="$1"
TXN="$2"
managercheck="checked by zhangsan"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
exit 1
fi
checked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$managercheck" |wc -c`
if [ "$checked" -lt 1 ]
then
echo -e "\n你的代码必须张三通过了才可以提交!." 1>&2
exit 1
fi
# All checks passed, so allow the commit.
exit 0
下面模拟的是张三和李四都可以检查代码的shell
#!/bin/sh
REPOS="$1"
TXN="$2"
zhangsancheck="checked by zhangsan"
lisicheck="checked by lisi"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
lichecked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$lisicheck" |wc -c`
zhangchecked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$zhangsancheck" |wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
exit 1
fi
if [ "$lichecked" -gt 1 ]
then
exit 0
elif [ "$zhangchecked" -lt 1 ]
then
echo -e "\n你的代码必须张三看了后才可以提交." 1>&2
exit 1
fi
# All checks passed, so allow the commit.
exit 0
以下代码本来是为了限制某个用户只能提交部分格式的文件,后来发现现有的几个hook模版均不提供对应的参数,先mark在下面
#此处增加前端可以文件后缀名
FILTER='\.(js|css|jpg|png|gif)$'
files=$($SVNLOOK changed -t $TXN $REPOS |awk '{print $2}')
for f in $files
do
#检查文件类型,仅允许上面允许的后缀
if echo $f|tr A-Z a-z|grep -Eq $FILTER
then
echo "File $f is not allow ($FILTER) file" >&2
exit 1
fi
分享到:
相关推荐
标题中的“svn强制添加注释脚本”指的是在使用Subversion(SVN)版本控制系统时,为了确保提交的代码质量,通常会设置一个预提交钩子(pre-commit hook),这个钩子会在用户提交代码前执行,强制要求提交时必须附带...
在Windows环境下,设置SVN强制添加注释可以通过修改SVN服务器配置来实现。主要涉及以下几个步骤: 1. **编辑SVN服务器配置文件**:首先,你需要找到SVN服务器的配置文件,通常位于`conf`目录下的`svnserve.conf`。...
本文将详细讲解如何在SVN服务端配置中强制要求开发者在提交代码时添加注释,以便更好地追踪和理解每次提交的目的。 **SVN提交注释的重要性** 在团队开发中,每次代码提交都应该附带清晰的注释,这有助于其他团队...
svn提交强制输入注释信息的原理是通过修改pre-commit钩子脚本来实现的。在提交过程中,钩子脚本会检查提交信息是否符合要求(例如是否含有足够的字符数)。如果不符合要求,钩子脚本就会阻止提交,并给出提示信息。 ...
本篇将详细讲解如何利用SVN的Hook脚本来限制用户删除文件,并强制他们在提交时添加注释。 首先,我们关注的是`pre-commit`钩子,这是一个在提交发生之前运行的脚本。在Windows环境中,通常将`pre-commit.tmpl`模板...
### SVN Hook预提交(pre-commit)控制机制:禁止删除文件与强制添加注释 #### 一、SVN(Subversion)简介 SVN 是一个集中式的版本控制系统,它可以帮助团队管理和跟踪项目的开发过程。通过SVN,开发人员可以保存...
在本案例中,我们需要创建一个预提交(pre-commit)钩子脚本来实现两个功能:禁止除特定用户外的所有人删除文件,并且强制所有提交必须包含至少10个字符的注释。 首先,我们来理解一下这个`pre-commit.bat`钩子脚本...
如果文件被他人锁定,你可以添加`--force`选项来强制解锁。命令格式如下: ```bash svn unlock --force PATH_TO_FILE ``` 其中,`PATH_TO_FILE`是你要解锁的文件或目录的路径。这会解除任何存在的锁,无论锁的...
将文件中以下几行内容注释掉, 前面添加'#'并在此位置添加如下几行:#要求注释不能少于5个字符(数字和字母),您可自定义echo -e "nLog messag
标题"SVN强制日志、日志重新编辑可配置细节"表明我们要讨论如何配置SVN来确保每次提交都有详实的日志信息,并且允许用户在必要时编辑这些日志。 1. **SVN钩子脚本**: SVN钩子脚本位于每个SVN仓库的`hooks`目录下...
- `-m "<addTestDir>"`: 添加目录的注释消息。 - **示例**: `svn mkdir svn://192.168.1.72/TI365/test -m "add test dir"` - **简写**: `无` **解释**: 此命令用于在版本库中创建新的目录。创建后需要提交才能...
- **版本标识**: 每次提交代码时,都需要添加详细的注释,解释变更的原因。 - **分支管理**: 使用SVN的分支功能,可以在不影响主干代码的情况下进行实验性开发。 #### 三、SVN基本配置 - **仓库创建**: 由配置管理...
在`httpd.conf`文件的末尾添加以下配置: ```plaintext <Location /svn/> Dav svn SVNParentPath "G:/svn/Repository" AuthType Basic #SSLRequireSSL AuthName "SVN Repository" SVNListParentPath on ...
同时,应在修改后添加注释,明确修改人和修改内容。 4. **代码提交**:在提交代码前,务必先执行`update`操作,确保本地代码是最新的。每天结束前,无论开发进度如何,都需要将代码上传到`trunk`,以保持代码库的...
若希望强制输入注释,可右键点击文件,选择“TortoiseSVN”>“属性”,新建“日志大小”规则,设置最小字符数,这样提交时若注释不足指定长度将无法完成。 ### 8. 解决版本冲突 当多人同时修改同一文件导致冲突时...
Tortoise SVN提供了请求解锁或强制解锁的功能,但需谨慎使用,以防止破坏他人工作。 11. **备份与迁移** 用户可以使用Tortoise SVN的导出功能将整个仓库备份到另一个位置,或在需要时迁移到新的SVN服务器。 总之...
使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件/httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program files\apache group\...
- **提交注释**:建议在每次提交时添加简明扼要的注释,这有助于其他开发者理解代码变更的原因和背景。 #### 查看历史记录 - **查看版本历史**:该功能常用于文件恢复和比较不同版本之间的差异。SVN支持查看服务器...