svn 强制用户添加注释 和 允许用户修改注释

当我们用TortoiseSVN提交代码时,有很多人不喜欢写注释,导致以后代码版本多,也不清楚哪个版本到底改了什么东西。所以在提交的时候,我会强制要求添加注释。这是如何实现的?这个话题就涉及到了svn的Hooks功能的使用。

所谓hooks,可以类似理解Linux内核Netfilter框架的hook点和hook函数的概念。当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就会去执行对应hook点的脚本。

那么如何设置hook脚本以保证强制用户添加注释,以及允许用户修改注释呢?

1. SVN强制添加注释信息

用户提交代码的动作,对应的是pre-commit。因此,进入hook目录把pre-commit.tmpl文件名修改为pre-commit, Windows下可以修改为pre-commit.bat,这样可以让系统知道该文件是可执行文件。

打开pre-commit文件,注释或删除所有的代码,然后添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/local/bin/svnlook # 修改为服务器安装的subversion目录 whereis svnlook
LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep "[a-zA-Z0-9]" | wc -m)
if [ "$LOGMSG" -lt 10 ]; then #要求注释不能少于10个字符(数字和字母),您可自定义 
echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
 
exit 0

保存,退出。
pre-commit添加可执行权限:
chmod +x pre-commit

2. 允许用户修改注释信息

用户修改注释信息的动作,对应的是pre-revpos-change。将hooks目录下的pre-revpos-change.tmpl改名为pre-revpos-change。通常该文件包含的功能就是允许用户修改注释信息。默认文件内容如下,如果不是下面这些内容的话,可以对照修改即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
 
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ];
then
    exit 0;
fi
 
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

保存,退出。
将该文件加上可执行权限即可:
chmod +x pre-revpos-change
这样,就可以允许用户修改注释信息了。

时间: 2024-12-20 05:04:00

svn 强制用户添加注释 和 允许用户修改注释的相关文章

为用户添加了被删用户的smtp地址,作为备用smtp地址之后发送邮件不可达

问题描述: 是这样,有2个老用户,[email protected]和[email protected]. 现在把wangdong这个用户删掉,给wang这个用户增加一个smtp地址:[email protected],然后我用outlook客户端新建邮件,输入[email protected],outlook客户端自动给我解析成一个中文名"王东",我无法修改,点击发送邮件后,退信报错:IMCEAEX-_o=First+20Organization_ou=Exchange+20Admi

mysql添加表注释、字段注释、查看与修改注释

1 创建表的时候写注释create table test1( field_name int comment '字段的注释')comment='表的注释'; 2 修改表的注释alter table test1 comment '修改后的表的注释'; 3 修改字段的注释alter table test1 modify column field_name int comment '修改后的字段注释';--注意:字段名和字段类型照写就行 4 查看表注释的方法--在生成的SQL语句中看show creat

CentOS普通用户添加管理员权限

1.添加用户,首先用adduser命令添加一个普通用户,命令如下:#adduser keaising//添加一个名为keaising的用户#passwd ljl //修改密码Changing password for user keaising.New UNIX password: //在这里输入新密码Retype new UNIX password: //再次输入新密码passwd: all authentication tokens updated successfully. 2.赋予roo

打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demoback.lalalaweb.com  前台:demo.lalalaweb.com 演示过程中可能会发现bug,希望即时留言反馈,谢谢 源码下载:https://github.com/sutianbinde/classweb               //不是全部的代码,每次更新博客才更新代码 学

SqlServer 添加用户 添加角色 分配权限

--创建一个简单的登录,登录名为:newlogin:登录密码:123456:默认数据库:master,默认数据库也可以不指定. EXEC sp_addlogin 'newlogin','123456','master' --创建用户 --创建一个简单的用户,如果不指定用户名,则添加到当前数据库登录名中,如果不指定角色,则该用户默认属于public角色.下为添加newlogin登录名. EXEC sp_adduser 'newlogin' --创建一个带用户名的用户,用户可以与登录名相同(同上一种

服务启动错误1053,一例解决方案(给用户添加NetworkService权限)

WIndows XP的服务中,有一个服务需要以NT  AUTHORITY/NetworkService用户启动,但怎么也启动不起来,使用本地系统帐户启动没有任何问题,但是换成NetworkService就启动不了,报“错误1053:服务没有及时相应启动或控制请求”.找不到解决方案,我在另一台电脑上好好的,怎么到了这台电脑就不行了呢? 后来,寻到一个网页(转)用户 'nt authority/network service' 登录失败,对阿,这两台电脑硬盘分区格式不一样,那台能用的是Fat32分区

Linux给用户添加sudo权限

linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be reported. 这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决: 进入超级用户模式.也就是输入" su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式.(当然,你也可以直接用root用) 添加文件的写权限.也就是输入命令" chmod

用Bash脚本将Linux普通用户添加为系统管理员

将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但吃内存的“重量级”桌面环境,使用的就是最基本的X视窗+Sawfish窗口管理器的组合.在这样的环境下进行用户管理,都是通过命令行来完成.如,使用useradd命令添加新用户.不过,由useradd命令添加的用户只具有普通使用者的权限,不具备系统管理的能力.这样一来,就给一些常见的操作带来不便,如,使

【debian】给用户添加sudo权限

新装的debian系统默认是没有sudo功能的. 于是,在root用户权限下: apt-get install sudo 然后再修改文件 /etc/sudoers : chmod +w /etc/sudoers // 给/etc/sudoers添加写权限vim /etc/sudoers // 修改sudoers文件 在最下面添加格式:用户名 ALL=(ALL) ALL,比如给zl用户添加sudo权限,则添加: zl ALL=(ALL) ALL 最后将sudoers文件改为只读权限: chmod