zoukankan      html  css  js  c++  java
  • 关于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会提示的。

    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]

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

  • 相关阅读:
    Java的XML解析
    Jackson解析XML
    Eclipse配置MyBatis的xml自动提示【转】
    mui消息框alert,confirm,prompt,toast
    base64编码的作用【转】
    一个mui扩展插件mui.showLoading加载框【转】
    RabbitMQ的使用场景
    Spring集成RabbitMQ
    消息确认机制
    Java操作队列
  • 原文地址:https://www.cnblogs.com/luomingui/p/2667374.html
Copyright © 2011-2022 走看看