zoukankan      html  css  js  c++  java
  • svn 强制用户添加注释 和 允许用户修改注释

    当我们用提交代码时,有很多人不喜欢写注释,导致以后代码版本多,也不清楚哪个版本到底改了什么东西。所以在提交的时候,我会强制要求添加注释。这是如何实现的?这个话题就涉及到了svn的Hooks功能的使用。

    所谓hooks,可以类似理解Linux内核Netfilter框架的hook点和hook函数的概念。当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就会去执行对应hook点的脚本。

    那么如何设置hook脚本以保证强制用户添加注释,以及允许用户修改注释呢?

    1. SVN强制添加注释信息

    用户提交代码的动作,对应的是。因此,进入hook目录把.tmpl文件名修改为, Windows下可以修改为.bat,这样可以让系统知道该文件是可执行文件。

    打开文件,注释或删除所有的代码,然后添加如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #!/bin/sh
    REPOS="$1"
    TXN="$2"
    SVNLOOK=/usr/local/bin/svnlook # 修改为服务器安装的subversion目录 whereis svnlook
    LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep "[a-zA-Z0-9]" | wc -m)
    if [ "$LOGMSG" -lt 10 ]; then #要求注释不能少于10个字符(数字和字母),您可自定义 
    echo -e "
    Empty log message not allowed. Commit aborted!" 1>&2
    exit 1
    fi
     
    exit 0

    保存,退出。
    添加可执行权限:
    chmod +x 

    2. 允许用户修改注释信息

    用户修改注释信息的动作,对应的是pre-revpos-change。将hooks目录下的pre-revpos-change.tmpl改名为pre-revpos-change。通常该文件包含的功能就是允许用户修改注释信息。默认文件内容如下,如果不是下面这些内容的话,可以对照修改即可:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    #!/bin/sh
    REPOS="$1"
    REV="$2"
    USER="$3"
    PROPNAME="$4"
    ACTION="$5"
     
    if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ];
    then
        exit 0;
    fi
     
    echo "Changing revision properties other than svn:log is prohibited" >&2
    exit 1

    保存,退出。
    将该文件加上可执行权限即可:
    chmod +x pre-revpos-change
    这样,就可以允许用户修改注释信息了。

  • 相关阅读:
    分享几个原生javascript面向对象设计小游戏
    原生javascript模仿win8等待进度条。
    微信公众平台入门开发教程.Net(C#)框架
    AsyncDelegate
    Lock
    BackgroundWorker
    Thread
    深拷贝-浅拷贝
    WindowsService
    事件本质
  • 原文地址:https://www.cnblogs.com/doseoer/p/6067788.html
Copyright © 2011-2022 走看看