关于SVN提交强制加入注释

一、摘要

场景:

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

问题:

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会提示的。

在hooks文件夹下找到

用户提交代码的动作,对应的是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

SVNLOOKlog−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

如下:

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

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

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

七、第五步 效果图

小于5个字符 提示如下:

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

关于SVN提交强制加入注释,布布扣,bubuko.com

时间: 2024-08-08 20:44:44

关于SVN提交强制加入注释的相关文章

SVN提交强制写入注释及相关扩展阅读

假设SVN已经搭建成功,版本库根目录为/opt/svn/repos 找到版本库下面./hook/目录,一共9个文件,简单介绍一下 文件 说明 1 pre-commit.tmpl 提交之前被执行 2 pre-lock.tmpl 版本库锁定之前被执行 3 pre-revprop-change.tmpl 版本库增删改之前被执行 4 pre-unlock.tmpl 版本库解除锁定之前被执行 5 post-commit.tmpl 提交之后被执行 6 post-lock.tmpl 版本库锁定之后被执行 7

SVN提交强制添加注释信息

在SVN管理上很多同事为了方便直接提交,不填写注释,在日后的管理上造成很大的麻烦,在此通过pre-commit脚本进行控制,提交时不能少于5个字符,否则不予提交. REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS"|sed s/[[:space:]]//g|awk -F "" '{print

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%"

svn提交时强制添加注释 (转)

SVN提交时,如果没有注释,在查阅历史时,会非常不方便.因此我们需要有一个让程序员提交代码时,强制添加注释的规则.下面看看在SVN中怎么实现. 1. 推荐使用VisualSVN作为服务端(免费下载地址:http://www.visualsvn.com/).安装完毕后,打开VisualSVN Server管理器,在版本库上点击"属性",选择"Hooks"选项,选中"Pre-commit hook"后,点击"Edit".(如下图)

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提交时必须添加注释,否则有可能不知道代码是谁提交的. 搭建svn服务器时,用的是CollabNetSubversionEdge.添加用户,管理工程权限都挺方便.让某个工程在提交时添加注释,需要在svn的hooks目录下,新建一个pre-commit的文件并给它可执行权限. 代码如下: #!/bin/bash REPOS="$1" TXN="$2" SVNLOOK=/local/csvn/bin/svnlook LOGMSG=$($S

如何让SVN提交时候强制添加注释

一.右击需要设置的库,依次选择"所有任务","Manage Hooks" 二.选中Pre-commit hook,点击"Edit",或者直接双击Pre-commit hook 三.打开Pre-commit hook后,添加代码 @echo offsetlocalset REPOS=%1set TXN=%2rem check that logmessage contains at least 40 charactersrem ...........

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

鉴于组内有些人在提交代码的时候并不写注释,而且没有固定格式,所以准备给svn提交时增加强制注释. 首先找到代码库里的hooks目录,正常建svn库的时候都有这个目录.进入hooks目录,找到pre-commit.tmpl,去掉tmpl,重命名为pre-commit. 这是一个shell脚本,如果是简单的判断注释内容不能小于几个字符,直接写shell脚本就可以,但是现在我想让开发按照固定格式提交代码, 例如: reason:电商 developer:du reviewer:du shell应该也是

Linux停SVN提交时强制写日志

Linux下SVN提交时强制写日志 SVN默认可以不写注释提交,有时候可能忘记写注释,有的人也没有写注释的习惯,导致翻看history的时候都不知道做了哪些更改,可以依照以下步骤修改SVN配置,强制提交SVN前写注释 步骤: 1.进入svn/code/hooks目录,在svn版本库的hooks文件夹下面,复制模版pre-commit.tmplcp pre-commit.tmpl pre-commitchmod +x pre-commit 2.编辑pre-commit文件:将:$SVNLOOK l