我的同事非常顽固。在开始时,他们将没有任何消息提交,所以我试图教育他们并输入一个预先提交的脚本,以便在他们忘记时检查是否为空。 然后他们会发出类似“修复”的消息,所以我再次与他们交谈并更新脚本以强制它链接到bug跟踪器。现在,他们为同一个文件连续8次输入相同的提交消息(错误ID:错误标题)。
在我与他们讨论如何没有用之后,如何创建一个预提交钩子来检查提交消息是否与最近20个提交消息中的一个不同?
答案 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