博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
svn提交时强制注释
阅读量:7110 次
发布时间:2019-06-28

本文共 2491 字,大约阅读时间需要 8 分钟。

不少开发员提交修改的时候都不写注释,导致查看历史时很费劲,也不太符合规范。有的公司要求每次提交修改时都写上bug号或者任务描述,那么如何在工具上防止开发员们不写注释呢? 

  利用svn的pre-commit钩子可简单实现此要求。 
进入仓库project1/hooks目录,找到pre-commit.tmpl文件,重命名,去掉后缀.tmpl。 
编辑pre-commit文件:(Linux系统和windows系统脚本内容见1和2) 
1、Linux系统

方法1:

将: 

$SVNLOOK log -t "$TXN" "$REPOS" | \ 
   grep "[a-zA-Z0-9]" > /dev/null || exit 1 
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 
这三行注释掉(前面加#符号), 
在此位置添加如下几行: 
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` 
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义 
then 
  echo -e "\nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2 
  exit 1 
fi 
保存,退出。 
给pre-commit添加可执行权限: 
chmod +x pre-commit 
这里记得修改 $SVNLOOK=(svnlook的路径,/csvn的安装目录/bin/svnlook) 
配置结束,可以使用了。

 

方法2:

这两天把项目的开发机迁移到了linux环境,用python重写了原来的svn hook,保存为pre-commit放到svn的hooks目录下,chmod +x pre-commit加上执行权限即可。windows下写SVN钩子比较麻烦,只能是批处理或者exe,linux下随便用什么脚本语言写都可以,只要加上可执行权限就行了。

 

#! /usr/bin/env python# -*- coding: utf-8 -*- """SVN提交前检查钩子功能:        1、强制填写提交注释,内容10字节以上        2、强制注释格式为:xxx:xxx        3、提交文件检查,过滤不允许提交的文件作者: 李思杰 
<2012/04/28>"""import sysimport osimport redef main(argv): (repos, txn) = argv badlist = (".*config\.php$", ".*/php/cache", ".*test", "config\.js$","^.*\.db$") message = "".join(os.popen("/usr/bin/svnlook log '%s' -t '%s'" % (repos, txn)).readlines()).strip() if len(message) < 10: sys.stderr.write("请输入本次提交的修改内容,10字节以上。"); sys.exit(1) if message.find(':') < 1: sys.stderr.write("请按规范填写注释,格式为:功能名: 修改说明。"); sys.exit(1) changelist = os.popen("/usr/bin/svnlook changed '%s' -t '%s'" % (repos, txn)).readlines() for line in changelist: for pattern in badlist: if re.search(pattern, line): sys.stderr.write("请不要把 %s 加入版本库。" % line[1:].strip()); sys.exit(1) sys.exit(0)if __name__ == "__main__": main(sys.argv[1:])

 

 2、windows强制注释脚本

 

@echo off  

 setlocal 

 set REPOS=%1  

 set TXN=%2          

 

rem 保证输入8个字符 

 svnlook log %REPOS% -t %TXN% | findstr "........" > nul 
 if %errorlevel% gtr 0 goto :err_action

 

rem 过滤空格字符 

svnlook log %REPOS% -t %TXN% | findstr /ic:"        " > nul 
 if %errorlevel% gtr 0 goto :success 
  
 :err_action 
 echo 你本次版本提交未填写任何变更的日志说明信息.      >&2 
 echo 请补充日志说明信息后再提交代码,例如:功能说明等.  >&2 
 echo 输入的日志信息不少于8个字符说明(或4个汉字),谢谢! >&2 
 echo *******************禁止空格数据***************** >&2

 goto :err_exit

 

:err_exit 

 exit 1 
  
 :success 
 exit 0

转载地址:http://xvlhl.baihongyu.com/

你可能感兴趣的文章
Alpine Linux 3.4.4 发布,轻量级发行版
查看>>
Hugo 0.21 发布,Go 编写的静态网站生成器
查看>>
(cljs/run-at (->JSVM :browser) "语言基础")
查看>>
《数据结构与算法 C语言版》—— 2.6小结
查看>>
文科生也能搞定的深度学习入门漫画!(上)
查看>>
《FLUENT 14流场分析自学手册》——2.3 FLUENT14.5软件包的安装以及运行
查看>>
阿里云全球首批 MVP 赵玮专访 - 爱运动的女研究员
查看>>
《Excel 职场手册:260招菜鸟变达人》一第 30 招 查找重复值或唯一值
查看>>
决定将代码开源之前要确定的四个问题
查看>>
Java多线程CyclicBarrier学习
查看>>
厌倦了编程书?来试试这3种提高编程技能的有趣方法吧
查看>>
《教孩子学编程(Python语言版)》——2.4 添加颜色
查看>>
并发工具类(四)两个线程进行数据交换的Exchanger
查看>>
《精通Spring MVC 4》——1.4 命令行方式简介
查看>>
Ceph分布式存储实战1.2 Ceph的功能组件
查看>>
《贝叶斯思维:统计建模的Python学习法》一2.5 封装框架
查看>>
《操作系统真象还原》——0.20 BIOS中断、DOS中断、Linux中断的区别
查看>>
爱的初体验!第二弹!多图! —— GNOME 3.10/Arch Linux
查看>>
《C++覆辙录》——1.12:嘴上无毛,办事不牢
查看>>
《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.4 DM9000A以太网控制器...
查看>>