合法提交消息的git hook(#123好消息)

时间:2011-08-22 21:39:16

标签: git version-control hook commit trac

我需要确保提交消息是合法的否则拒绝它。提交消息应该类似于“#123 fix missing bracket”

我想确保它以hash开头,有一个整数(没有123a),并且消息至少有10个字。

很高兴:消息不会完全相同

我正在使用此Trac插件进行更改集,它更详细地描述了提交消息格式http://trac-hacks.org/wiki/TracTicketChangelogPlugin

谢谢,

3 个答案:

答案 0 :(得分:5)

您可以创建一个pre-receive挂钩,根据您喜欢的任何条件拒绝提交 - 您只需要将错误打印到标准输出并以非零状态退出。例如,类似于:

#!/bin/sh
while read rev_old rev_new ref
do
    MALFORMED="$(git rev-list --oneline $rev_old..$rev_new | egrep -v '^[a-f0-9]+ #[0-9]+ ')"
    if [ x"$MALFORMED" != x ]
    then
        echo Some commits had a malformed subject line
        exit 1
    fi
done

(我没有测试过,但你明白了......)

答案 1 :(得分:5)

我用:

创建了一个commit-msg钩子
#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)

#starts with # then number, space, and at least 5 words no more than 200
$regex = /(^#[0-9]+ \W*(\w+(\W+|$)){5,200})/

if !$regex.match(message)
puts "Your message is not formatted correctly (example: #XXX at least 5 words)"
exit 1
end

我借用了这篇博客文章 http://fhopf.blogspot.com/2011/01/git-hook-for-redmine-messages.html

答案 2 :(得分:0)

麦克,

我们的用户组,佛罗里达中央网站开发人员用户组,最近讨论了GitHooks,可以实施它来解决您提出的问题。讨论由Full Sail大学的Rick Osborne领导。您可以在http://www.meetup.com/florida-web-developers/events/20352661/访问会议,并在此处http://www.meetup.com/florida-web-developers/messages/boards/thread/12465891/#45223031进行录制。

如果您花时间完成整个录制的讨论,您将看到Rick逐步指导您完成此过程,包括可下载的示例。

希望这有帮助。