Question

In our deployment process on of the last steps will be a merge of the release branch into the master branch.

I want to ensure via a hook, that each of these merges needs a manual message in the commit, so the person merging has the opportunity to write down what general changes will go into the master with this merge. Aka Change.log or release notes.

I found so far that the hook I would need would be the pre-merge. https://gitorious.org/git/mjg/commit/c15bfac6d3f5a28b3cd5745fef71e7f93bc1f8a4 It should only be activated when merging into the master branch. I guess it also should be called when a non-automatic commit into the master takes place.

Has anybody some hints how I can do that? A bash hook would be preferred, but php is also fine. Or I guess from other languages I can try to translate the concept to bash or php.

Thank you for any hints in advance!

Was it helpful?

Solution

as promised here is my solution. Past this in your commit.msg hook and adapt to your needs.

#!/bin/bash
# give me the branch I am currently working on
mybranch=`git rev-parse --abbrev-ref HEAD`

# Depending on the branch we do different validation
if [ $mybranch = master ]; then
regex="^[^Merge|^#].{71,}"
message="ERROR: Commit message is too short."
else
regex="^(PMS|GKM)-[0-9]{3,4}\s\:\s.{10,}"
message="ERROR: Commit message is missing the Ticketnumber in the format GKM-nnnn: or PMS-nnnn :."
fi

test "" != "$(grep -E $regex "$1")" || {
    cat $1 >&2
    echo >&2 $message
    exit 1
}

Depending on the branch I choose different regular expressions and matching error messages.

This ensures for any branch not being master, that the message starts with a ticket number. For the master branch we don't need a ticket number, but a longer commit message.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top