Akbar Basha
Akbar Basha

Reputation: 1198

Validate commit message in git

How to validate the commit message in precommit?

The commit message should be valid for the following condition.

the prefix of the commit message should be like feature({A-Z}:{0-9}): 'commit message'

I am a beginner for git

Upvotes: 0

Views: 3730

Answers (1)

Ian MacDonald
Ian MacDonald

Reputation: 14030

In your local copy, your .git/hooks folder contains a set of .sample files. For your specific case, you would use the commit-msg.sample file.

$            cd .git/hooks
.git/hooks$  cp commit-msg.sample commit-msg
.git/hooks$  cat commit-msg
#!/bin/sh
#
# An example hook script to check the commit log message.
# Called by "git commit" with one argument, the name of the file
# that has the commit message.  The hook should exit with non-zero
# status after issuing an appropriate message if it wants to stop the
# commit.  The hook is allowed to edit the commit message file.
#
# To enable this hook, rename this file to "commit-msg".

# Uncomment the below to add a Signed-off-by line to the message.
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
# hook is more suited to it.
#
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

# This example catches duplicate Signed-off-by lines.

test "" = "$(grep '^Signed-off-by: ' "$1" |
     sort | uniq -c | sed -e '/^[   ]*1[    ]/d')" || {
    echo >&2 Duplicate Signed-off-by lines.
    exit 1
}

You can modify this script as you see fit. When you exit 1, the commit process will halt instead of completing successfully.

Upvotes: 1

Related Questions