关于SVN提交强制加入注释

摘要:
这项工作需要有人在每天提交代码时提醒每个人添加注释。c、 步骤1:创建SVN版本库。3、 步骤1:创建SVN版本库。在SVNDataBase文件夹上创建版本库。SVN将提示SVNDataBase文件夹必须为空。在hooks文件夹中查找用户提交代码的操作。这允许系统在创建文件时知道可执行文件。4、 步骤2:预提交。修改前的tmpl代码#。二进制的
一、摘要

场景:

    在这次开发项目过程中,团队中总是有人忘记添加注释。

问题:

    1:其他成员不知道你提交是什么代码, 给回滚操作带来很多不必要的麻烦。

    2:这个工作需要有一个人天天提醒大家在提交代码的时候加入注释。

    3:这个是重复的,定时的,固定的 工作。

思路:

    1:我们可以把这项工作交给电脑来完成岂不是更好。

    2:提交代码的时候电脑自动提醒。

    3:代码注释字数限制。以下为最少5个字为例子。

二、本文大纲

       a、摘要。

       b、本文大纲。

       c、第一步创建SVN版本库。

       d、第二步 pre-commit.tmpl 修改前代码:。

       e、第三步 pre-commit.bat 修改后代码:(Windows)。

       f、第二个方法,直接在客服端设置。

       j、第四步 效果图。

三、第一步创建SVN版本库

在 SVNDataBase文件夹上建立版本库SVNDataBase文件夹必须是空的这个SVN会提示的。

clipboard

在hooks文件夹下找到

clipboard[1]

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

四、第二步 pre-commit.tmpl 修改前代码

#!/bin/sh

# PRE-COMMIT HOOK

#

# The pre-commit hook is invoked before a Subversion txn is

# committed.  Subversion runs this hook by invoking a program

# (script, executable, binary, etc.) named 'pre-commit' (for which

# this file is a template), with the following ordered arguments:

#

#   [1] REPOS-PATH   (the path to this repository)

#   [2] TXN-NAME     (the name of the txn about to be committed)

#

#   [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN.

#

#   If STDIN contains the line "LOCK-TOKENS:\n" (the "\n" denotes a

#   single newline), the lines following it are the lock tokens for

#   this commit.  The end of the list is marked by a line containing

#   only a newline character.

#

#   Each lock token line consists of a URI-escaped path, followed

#   by the separator character '|', followed by the lock token string,

#   followed by a newline.

#

# The default working directory for the invocation is undefined, so

# the program should set one explicitly if it cares.

#

# If the hook program exits with success, the txn is committed; but

# if it exits with failure (non-zero), the txn is aborted, no commit

# takes place, and STDERR is returned to the client.   The hook

# program can use the 'svnlook' utility to help it examine the txn.

#

# On a Unix system, the normal procedure is to have 'pre-commit'

# invoke other programs to do the real work, though it may do the

# work itself too.

#

#   ***  NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT  ***

#   ***  FOR REVISION PROPERTIES (like svn:log or svn:author).   ***

#

#   This is why we recommend using the read-only 'svnlook' utility.

#   In the future, Subversion may enforce the rule that pre-commit

#   hooks should not modify the versioned data in txns, or else come

#   up with a mechanism to make it safe to do so (by informing the

#   committing client of the changes).  However, right now neither

#   mechanism is implemented, so hook writers just have to be careful.

#

# Note that 'pre-commit' must be executable by the user(s) who will

# invoke it (typically the user httpd runs as), and that user must

# have filesystem-level permission to access the repository.

#

# On a Windows system, you should name the hook program

# 'pre-commit.bat' or 'pre-commit.exe',

# but the basic idea is the same.

#

# The hook program typically does not inherit the environment of

# its parent process.  For example, a common problem is for the

# PATH environment variable to not be set to its usual value, so

# that subprograms fail to launch unless invoked via absolute path.

# If you're having unexpected problems with a hook program, the

# culprit may be unusual (or missing) environment variables.

#

# Here is an example hook script, for a Unix /bin/sh interpreter.

# For more examples and pre-written hooks, see those in

# the Subversion repository at

# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and

# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/

REPOS="$1"

TXN="$2"

# Make sure that the log message contains some text.

SVNLOOK=/usr/local/bin/svnlook

$SVNLOOK log -t "$TXN" "$REPOS" | \

   grep "[a-zA-Z0-9]" > /dev/null || exit 1

# Check that the author of this commit has the rights to perform

# the commit on the files and directories being modified.

commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1

# All checks passed, so allow the commit.

exit 0

五、第三步 pre-commit.bat 修改后代码 ( Windows )

把pre-commit文件的内容清楚复制下面的代码到pre-commit文件中:

@echo off

setlocal

set REPOS=%1

set TXN=%2

rem check that logmessage contains at least 10 characters

rem .....代表5个字符

svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul

if %errorlevel% gtr 0 goto err

exit 0

:err

echo Empty log message not allowed. Commit aborted! 1>&2

exit 1

如下:

clipboard[6]

给pre-commit添加可执行权限: 
chmod +x pre-commit

clipboard[7]

六、第二个方法,直接在客服端设置

   通过TortoiseSvn,在本地副本中,选择项目,右键选择TortoiseSvn,选择属性,添加tsvn:logminsize,将值限定为10,添加了logminsize属性后,要将本地工作副本commit一下,才能生效。如下图:

image

image

 image

七、第五步 效果图

clipboard[18]

小于5个字符 提示如下:

clipboard[19]

修改注释目前在工作上还没有遇到,嘿嘿。就先不研究啦。

免责声明:文章转载自《关于SVN提交强制加入注释》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows 服务开发 以及 重启IIS应用池Gerrit下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android安全——Activity劫持的防范程序

如果真的爆发了这种恶意程序,我们并不能在启动程序时每一次都那么小心去查看判断当前在运行的是哪一个程序。因此,前几个星期花了一点时间写了一个程序,叫反劫持助手。原理很简单,就是获取当前运行的是哪一个程序,并且显示在一个浮动窗口中,以帮忙用户判断当前运行的是哪一个程序,防范一些钓鱼程序的欺骗。 在这一次,由于是“正当防卫”,就不再通过枚举来获取当前运行的程序了...

iOS企业证书开发的APP证书过期时间监控

大家都知道iOS的企业证书开发的APP,证书都是一年有效期,满一年得新建证书重新打包,否则无法继续使用。 我们一个企业账号下有几十个APP,一个个去看也很麻烦~~搞个监控呗!!! 写个脚本放Jenkins上定时跑就行,跑完发布邮件: 1.邮件包含信息:APP名称,APP相关的bundle id、证书名称、签名时间、团队id,过期时间,以及剩余有效的月数。...

MySQL行列转换

实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:  图1 但是,需要的结果可能是这样:  图2 这个时候就得行列转换了。 1.行转列的几种方法 1.1 case ...  when  ... then ... else ... end select uname,uid, -- 正常查询的字段 sum( ca...

爬取csdn的数据与解析存储(9)

安装软件: pip instal pymysq pip install peewee 创建数据模型orm from peewee import * db = MySQLDatabase("spider", host="127.0.0.1", port=3306, user="root", password="root") class BaseModel...

django-CMS的安装和工程启动

django CMS的安装(版本3.5.2)      Django版本2.0.5,python版本为3.5.3 一般而言,在自己的电脑上为每个项目配置自己的开发环境是很有必要的,应为每个项目需要用到的环境不尽相同甚至有所冲突,因此我们先利用python的虚拟环境管理工具建立django-cms 3.5.2 的开发环境,我使用的是python-virt...

Centos7 中查找文件、目录、内容

1、查找文件 find / -name ‘filename’ 2、查找目录 find / -name ‘path’ -type d 3、查找内容 find . | xargs grep -ri ‘content’//find . | xargs grep -ril ‘content’ 只显示文件名称 文件类型包括:普通文件(f),目录(d),块设备文件(b...