Search code examples
gitversion-controlhookcommittrac

git hook for legit commit message (#123 good message)


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,


Solution

  • 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