0

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

4
  • 1
    What do you mean by "validate the commit message"? Commented Dec 13, 2018 at 15:42
  • @RobertAKARobin sorry for this i have mentioned Commented Dec 13, 2018 at 15:45
  • @AkbarBasha I am looking for same thing. Please help me if you got the answer Commented Jun 11, 2019 at 8:48
  • @Ajit i did using gulp task. find the code below, gulp.task('commit-message', function (done) { // Get commit message from git commit edit message file let msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf8'); msg = msg.split('\n').join(' '); if (!RegExp(regexp.COMMIT_TYPES).test(msg)) { const error = '\n The template: \n <jira-id>{spac}: <summary> \n\n Example: \n PWA-01 : Fixed bug \n\n'; // console.log(error); process.exitCode = 1; } else { // Allow git commit process.exitCode = 0; } done(); }); Commented Jun 18, 2019 at 7:20

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.