SVN提交强制写入注释及相关扩展阅读

假设SVN已经搭建成功,版本库根目录为/opt/svn/repos

找到版本库下面./hook/目录,一共9个文件,简单介绍一下

文件 说明
1 pre-commit.tmpl 提交之前被执行
2 pre-lock.tmpl 版本库锁定之前被执行
3 pre-revprop-change.tmpl 版本库增删改之前被执行
4 pre-unlock.tmpl 版本库解除锁定之前被执行
5 post-commit.tmpl 提交之后被执行
6 post-lock.tmpl 版本库锁定之后被执行
7 post-revprop-change.tmpl 版本库增删改之后被执行
8 post-unlock.tmpl 版本库解除锁定之后被执行
9 start-commit.tmpl 提交之前被执行

其中start-commit和pre-commit的区别在于:

start-commit在提交事务发生之前执行,通常用于判断用户是否拥有提交权限.

pre-commit在提交事务执行完之前执行,通常用于保护版本库的内容或者文件位置.

本文只涉及提交注释的控制,只针对pre-commit进行说明,其他的脚本将不在本文进行说明

原pre-commit.tmpl文件中起作用的部分

REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" |    grep "[a-zA-Z0-9]" > /dev/null || exit 1

该脚本接受2个参数

REPOS="$1" /opt/svn/repos  表示svn仓库的绝对路径值

TXN="$2"    表示最新的一个版本的事务ID,不是版本号

注:如果想按照版本号进行查看执行一下命令

svnlook log -r $ID /opt/svn/repos/

svnlook在这里的作用是打印本次提交的注释(svnlook log)并且查找其中的字母和数字(grep "[a-zA-Z0-9]"),但是不进行输出(> /dev/null),如果执行失败进行异常退出(exit 1)

接下来,我们对这个钩子进行改造,改造部分的脚本如下:

SVNLOOK=/usr/bin/svnlook
# anothor way
# LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -c`
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | wc -c)
if [ "$LOGMSG" -lt 10 ]; then
echo -e "\n 提交文件时必须添加注释,提交中止." 1>&2
exit 1
fi

其中LOGMSG为注释的长度

这里去掉了查找(grep)条件,接受中文注释,如果需要对注释进行过滤再计算长度可以将查找添加回来

LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c)

wc命令: -c 统计字节数 -l 统计行数 -w 统计字数(一个单词算一个字)

判断: -eq 等于 -gt 大于 -lt 小于

echo 错误提示重定向到stderr (0:stdin 1:stdout 2:stderr)

保存钩子后需要给文件赋予执行权限 chmod 755 pre-commit.tmpl

时间: 2024-08-08 05:37:29

SVN提交强制写入注释及相关扩展阅读的相关文章

关于SVN提交强制加入注释

一.摘要 场景: 在这次开发项目过程中,团队中总是有人忘记添加注释. 问题: 1:其他成员不知道你提交是什么代码, 给回滚操作带来很多不必要的麻烦. 2:这个工作需要有一个人天天提醒大家在提交代码的时候加入注释. 3:这个是重复的,定时的,固定的 工作. 思路: 1:我们可以把这项工作交给电脑来完成岂不是更好. 2:提交代码的时候电脑自动提醒. 3:代码注释字数限制.以下为最少5个字为例子. 二.本文大纲 a.摘要. b.本文大纲. c.第一步创建SVN版本库. d.第二步 pre-commit

SVN提交强制添加注释信息

在SVN管理上很多同事为了方便直接提交,不填写注释,在日后的管理上造成很大的麻烦,在此通过pre-commit脚本进行控制,提交时不能少于5个字符,否则不予提交. REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS"|sed s/[[:space:]]//g|awk -F "" '{print

svn 设置强制要求注释

在svn的库数据文件的hooks文件夹下面 有pre-commit.tmpl,我们把它备份一下pre-commit-bk.tmpl, 然后新增加一个 pre-commit.bat,里面填入如下脚本 即可. @echo off setlocal set REPOS=%1 set TXN=%2 rem check that logmessage contains at least 5 characters svnlook log "%REPOS%" -t "%TXN%"

svn提交时强制添加注释 (转)

SVN提交时,如果没有注释,在查阅历史时,会非常不方便.因此我们需要有一个让程序员提交代码时,强制添加注释的规则.下面看看在SVN中怎么实现. 1. 推荐使用VisualSVN作为服务端(免费下载地址:http://www.visualsvn.com/).安装完毕后,打开VisualSVN Server管理器,在版本库上点击"属性",选择"Hooks"选项,选中"Pre-commit hook"后,点击"Edit".(如下图)

svn提交时强制注释

svn提交时强制注释 不少开发员提交修改的时候都不写注释,导致查看历史时很费劲,也不太符合规范.有的公司要求每次提交修改时都写上bug号或者任务描述,那么如何在工具上防止开发员们不写注释呢?  利用svn的pre-commit钩子可简单实现此要求.进入仓库project1/hooks目录,找到pre-commit.tmpl文件,重命名,去掉后缀.tmpl. 编辑pre-commit文件:(Linux系统和windows系统脚本内容见1和2)1.Linux系统 方法1: 将: $SVNLOOK l

svn提交时强制添加注释

负责前端开发的同事提出需求,svn提交时必须添加注释,否则有可能不知道代码是谁提交的. 搭建svn服务器时,用的是CollabNetSubversionEdge.添加用户,管理工程权限都挺方便.让某个工程在提交时添加注释,需要在svn的hooks目录下,新建一个pre-commit的文件并给它可执行权限. 代码如下: #!/bin/bash REPOS="$1" TXN="$2" SVNLOOK=/local/csvn/bin/svnlook LOGMSG=$($S

如何让SVN提交时候强制添加注释

一.右击需要设置的库,依次选择"所有任务","Manage Hooks" 二.选中Pre-commit hook,点击"Edit",或者直接双击Pre-commit hook 三.打开Pre-commit hook后,添加代码 @echo offsetlocalset REPOS=%1set TXN=%2rem check that logmessage contains at least 40 charactersrem ...........

SVN的Hooks功能--强制添加注释

所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念.当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本. SVN版本库目录下有hooks目录,里面有很多.tmpl的文件.这些文件用以定义某些动作触发的 hook脚本.默认状态下,这些脚本的后缀都是.tmpl,是没有起作用的.相当于Netfilter的各个hook点没有注册hook函数.所以,当用 户执行相关维护代码动作的时候,也不会触发hook脚本.

svn添加强制注释,pre-commit结合python

鉴于组内有些人在提交代码的时候并不写注释,而且没有固定格式,所以准备给svn提交时增加强制注释. 首先找到代码库里的hooks目录,正常建svn库的时候都有这个目录.进入hooks目录,找到pre-commit.tmpl,去掉tmpl,重命名为pre-commit. 这是一个shell脚本,如果是简单的判断注释内容不能小于几个字符,直接写shell脚本就可以,但是现在我想让开发按照固定格式提交代码, 例如: reason:电商 developer:du reviewer:du shell应该也是