TXN="$2"
SVNLOOK=/opt/CollabNet_Subversion/bin/svnlook
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c)
if [ "$LOGMSG" -lt 10 ]; then
echo -e "\n 提交文件时必须添加注释,提交中止."1>&2
exit 1
命令
解释
LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c)
将提交的日志
信息作为便来那个输入
之后,将grep英文和数字的结果作为变量
if [ "$LOGMSG" -lt 10 ]; 传入变量来判断变量长度是否小于10
-eq 等于号 -gt 大于号 -lt小于号
1. echo 错误提示信息的时候
必须重定向
到 stderr ,即 1>&2
2. pre-commit 文件拷贝到 hooks 目录之后,需要
chmod 0755 pre-commit ,给 pre-commit 文件增加可执行权限(或者至少把文件owner改为 svn 服务
运行用户并加上owner的x权限)
chmod +x pre-commit
注:更多请参考,
ubuntu linux下关于svn提交的时候强制写注释
SVN的Hooks功能--强制添加注释
Linux下如何设置SVN提交时强制添加注释
不少开发员提交修改的时候都不写注释,导致查看历史时很费劲,也不太符合规范。有的公司要求每次提交修改时都写上bug号或者任务描述,那么如何在工具上防止开发员们不写注释呢? Linux版本:1、在svn的hooks目录下新建一个名为pre-commit的文件并为其添加执行权限2、pre-commit文件的内容如下:#!/bin/shREPOS=
2.
svn
admin create data
3.
svn
serve -d -r /home/huangz/data/
svn
/data --listen-port 8999
4.在本机:
svn
co file:///home/huangz/data/
svn
/data,远程
svn
co
svn
://192.168.1.191:8
cd repository/
hook
s,找到pre-commit.tmpl文件,去掉后缀.tmpl, 编辑pre-commit文件:
1. windows: 重命名为pre-commit.bat
Java代码
@echo off setlocal set REPOS=%1 set TXN=%2 rem check that logmessage c
SVN
hook
s介绍
Hook
s 钩子,主要实现的
功能
就是在特定事件发生之前或者之后自动执行事先定义好的脚本代码来实现某些
功能
,类似于JS中的监听事件、MySQL中的触发器、Django中的signals信号等
大多数开发语言都可以用来编写
hook
s脚本,常用的如windows下的bat、vb,l...
公司的windows服务器下,
svn
服务需要
添加
强制
注释
hook
,按照网上格式,做了个bat脚本,具体内容如下:
setlocal
set
SVN
_BINDIR=""C:\Program Files\Subversion Server"
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 chara
配置了台
svn
服务器,用来保存公司项目的代码,同时
svn
服务器也是一台web服务器。因此希望当我本地代码commit到
svn
服务器时,能够触发
svn
服务器的钩子
hook
s/post-commit将新版本的代码自动update到站点目录上去。
其实这样做,感觉有点傻。还不如直接把
svn
版本库指定到web服务器的站点目录下。而且这样,
svn
库一改,站点目录也马上就更改了。
svn
目录:/ho