I need to make sure commit messages are some what legit else reject it. The commit message should be like "#123 fixing missing bracket"
I want to make sure it begins with hash, there is an integer (no 123a), and the message is at least 10 words.
Nice to have: the message would not be the exact same in a row
I am using this Trac plugin for change set, it describes the commit message format in more detail http://trac-hacks.org/wiki/TracTicketChangelogPlugin
Thanks,
You can create a pre-receive
hook that refuses commits based on any criteria you like - you just have to print an error to standard output and exit with a non-zero status. For example, something along the lines of:
#!/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
(I haven't tested that, but you get the idea...)
I created a commit-msg hook with:
#!/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
I borrowed from this blog post http://fhopf.blogspot.com/2011/01/git-hook-for-redmine-messages.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With