'git interpret-trailers' is tripped by comment characters other than '#'
- From
Masahiro Yamada <yamada.masahiro@socionext.com>
- Date
- Jun 14, 2019, 11:35 UTC
- Message-ID
- <CAK7LNAR=KhTZRFFXTbcZwe-+65fGnVB7NbmVbQ7ymbmChDuhAg@mail.gmail.com>
Hi.
When I tried to add ChangeId tag for Gerrit Code Review, I noticed 'git interpret-trailers' went wrong if a comment character other than '#' is used.
Quick Test Code ---------------
cat <<EOF | git -c trailer.ifexists=doNothing interpret-trailers \
--trailer "Change-Id: new tag"
subject: this is commit subjectBlah Blah
Change-Id: old tag Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
; This is a comment line with non-default char
EOF
[result]
subject: this is commit subject
Blah Blah
Change-Id: old tag Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
; This is a comment line with non-default char
Change-Id: new tag
The same trailer 'Change-Id' was appended, ignoring trailer.ifexists=doNothing
Details -------
For Gerrit Code Review, we add "Change-Id" tag, which will identify the patch though the review process.
For details, you can refer: https://www.gerritcodereview.com/cmd-hook-commit-msg.html
Gerrit provides a shell script "commit-msg", which is hooked from 'git commit'.
You can see its implementation here: https://github.com/GerritCodeReview/gerrit/blob/v3.0.0/resources/com/google/gerrit/server/tools/root/hooks/commit-msg
It is implemented by using 'git interpret-trailers'.
I prefer ';' to '#" for commit comment lines.
So, I add the following:
[core]
commentChar = ";"With core.commentChar is set, 'git interpret-trailers' is so confused that accumulate the same tag for every 'git commit --amend'.
I guess this should be fixed on the Git side.
Perhaps, 'git interpret-trailers' should be changed to recognize core.commentChar ?
-- Best Regards Masahiro Yamada