用于相同消息的SVN预提交挂钩

时间:2013-10-03 14:55:31

标签: svn

我的同事非常顽固。在开始时,他们将没有任何消息提交,所以我试图教育他们并输入一个预先提交的脚本,以便在他们忘记时检查是否为空。 然后他们会发出类似“修复”的消息,所以我再次与他们交谈并更新脚本以强制它链接到bug跟踪器。现在,他们为同一个文件连续8次输入相同的提交消息(错误ID:错误标题)。

在我与他们讨论如何没有用之后,如何创建一个预提交钩子来检查提交消息是否与最近20个提交消息中的一个不同?

2 个答案:

答案 0 :(得分:2)

您可以在预提交挂钩中使用SVN命令或任何其他shell命令。您只需提供已安装工具的完整路径。请记住,这是在服务器上运行,因此它具有file://访问存储库。所以请svnlook log(首选)或svn log并检查结果输出以查找当前日志消息的匹配项。

答案 1 :(得分:1)

svnlook有2个选项组合在一起可以解决这个问题。

svnlook log http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.c.log.html

svnlook最年轻http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.c.youngest.html

Youngest获得了头部修订版。然后我将最后20次提交回显给temp。 file并使用grep在temp中搜索提交消息。文件。

grep选项为F,用于将文件用作输入,x用于匹配整行,q用于安静。

    #Prevent people putting in the same commit message multiple times by looking for an identical message in the last 20 commits
    ID=$(svnlook youngest $REPOS)
    COMMITS=/tmp/svncommits.txt
    rm $COMMITS
    for (( i=$ID-20; i<=$ID; i++ ))
    do
        echo $(svnlook log $REPOS -r $i) >> $COMMITS
    done

    if $(grep -Fxq "$COMMIT_MSG" "$COMMITS") ; then
        echo "Please describe what your change is, why you made it and don't use the same commit message every time." 1>&2
        exit 1
    fi