2

我的同事很固执。一开始他们会在没有任何消息的情况下提交,所以我试图教育他们并放入一个预提交脚本以检查是否为空,以防他们忘记。然后他们会输入类似“已修复”的消息,所以我再次与他们交谈并更新脚本以强制它链接到错误跟踪器。现在他们为同一个文件连续 8 次输入相同的提交消息(Bug ID:Bug Title)。

在我与他们讨论这如何没有帮助之后,我如何制作一个预提交挂钩来检查提交消息是否与最后 20 条提交消息之一不同?

4

2 回答 2

2

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

于 2013-10-04T12:05:00.987 回答
1

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

svnlook 日志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

最年轻的得到头部修正。然后我将最后 20 次提交回显到一个临时文件。文件并使用 grep 在临时文件中搜索提交消息。文件。

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
于 2013-10-07T20:51:21.463 回答