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

鉴于组内有些人在提交代码的时候并不写注释,而且没有固定格式,所以准备给svn提交时增加强制注释。

首先找到代码库里的hooks目录,正常建svn库的时候都有这个目录。进入hooks目录,找到pre-commit.tmpl,去掉tmpl,重命名为pre-commit。

这是一个shell脚本,如果是简单的判断注释内容不能小于几个字符,直接写shell脚本就可以,但是现在我想让开发按照固定格式提交代码,

例如:

reason:电商

developer:du

reviewer:du

shell应该也是可以做到的,但是本人shell用的确实不怎么熟练,况且python写起来更简单,所以用了一种shell结合python的方式做hook。

首先上python脚本

check.py

#coding=utf-8
import sys  

inputstr = sys.argv[1]

if inputstr=="":
    exit(1);
lstr=inputstr.split("\n")
if len(lstr)==3:
    if (‘reason:‘ in lstr[0] and len(lstr[0])>len(‘reason:‘)) and (‘developer:‘ in lstr[1] and len(lstr[1])>len(‘developer:‘)) and (‘reviewer:‘ in lstr[2] and len(lstr[2])>len(‘reviewer:‘)):
       exit(0);
    else:
       exit(1);
else:
    exit(1);

然后是pre-commit

#!/bin/sh
SVN_BINDIR=/opt/subversion/bin/svnlook
REPOS="$1"
TXN="$2"
LOGMSG=`$SVN_BINDIR log -t "$TXN" "$REPOS"`
var=`python /opt/svndata/repos/hooks/check.py "${LOGMSG}"`
result=$?
if [ $result -gt 0 ]
then
echo -e "you must input comment like this:\r\nreason:\r\ndeveloper:\r\nreviewer:" 1>&2
exit 1
fi
exit 0

这个pre-commit最好用vim来写,不要windows里写好再传到linux服务器上,会报格式错误,其实1>&2,-e也要加,只有这两个都加了,客户端提交的时候才能看到错误信息。
shell里对变量的引用 $result 和"$result"都可以,但是不要用单引号。还有if [ $result -gt 0 ]这块,空格一定要留出来,不然会报错。

验证一下,如下

无注释提交

会提示

上面的错误是系统原因,无大碍。主要是中间红框内的提示。我们可以看出增加强制注释成功。

----------------

由此例可以看出,我们完全可以在此基础上满足其他需求,例如提交代码发邮件,记日志入库等功能。

时间: 2024-10-11 11:08:10

svn添加强制注释,pre-commit结合python的相关文章

关于SVN提交强制加入注释

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

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的库数据文件的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%"

Python 中添加中文注释以及中文输出解释器报错的解决办法

终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明.把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明. 在代码的第一行 或者 第二行添加指定文件的编码类型 #-*- coding:utf-8 -*-           //添加代码类型1 #coding=utf-8         //添加代码类型2 上面两种方法随便哪一种都可以,别忘记了前面的 # . 这样代码中就可以添加中文注释 和 中文输出了. 另外提醒一句:vim 查看文件的编码类型是在命令模

svn添加项目脚本

公司经常添加SVN项目.相关领导发一个邮件,注明权限什么的, 然后按这个权限添加. 现在这个脚本,直接把附件的excel文件直接添加, 导入. #!/usr/bin/python  import xlrd import os import sys import tempfile def usage():   tmp = '''   useage:           ./script excel_file [release username]   e.g.           ./script 

为类和函数代码自动添加版权注释信息

以web项目为例: 一:给类加注释 1.在visual studio 的安装路径下 如:[盘符]:/Program files/Microsoft Visual Studio 8/Common7/IDE/ItemTemplates/web/cshare/2052/class.zip ,将里面的class.cs改为: C#代码  /*---------------------------------------------------------------- // Copyright (C) 2

oracle 建表后添加表注释及字段注释

oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1(id  varchar2(32) primary key,name VARCHAR2(8) NOT NULL,age number,) 添加表注释:COMMENT ON table t1 IS '个人信息'; 添加字段注释:comment on column t1.id  is 'id';comment on column t1.nameis '姓名';comment on column t

给myeclipse 添加自动注释 作者 日期

在每次写新的类时 署上自己的名字和日期等相关信息. windows / preferences / java / code style/code templates  右侧 comment 下面 types 点击 edit 添加如下 /** * @author 作者名称 * @date ${date} ${time} * @version 版本号码 * @TODO 描述 */ 然后勾选下方的 自动添加功能 给myeclipse 添加自动注释 作者 日期

Matlab基本功能:自定义函数、添加块注释、定时器的试用

1.自定义函数 新建一个m文件 在m文件里面第一行输入function [X,Y]=pll(X1,Y1,X2,Y2),这里x1 x2 y1 y2是你函数的输入值, x y是输出值,接着定义你要实现的功能,比如:x = x1 + x2; y = y1 + y2; 接着保存这个m文件,注意!! 这个m文件的名字必须是定义的函数的名字,即保存为pll.m 否则会出错. 接着在matlab命令窗口中输入 pll(1,2,3,4)看看会得到什么? 也可以另外创建一个m文件,在这里调用pll()这个函数.