Thread (1 message) 1 message, 1 author, 2022-03-28

Re: How to get the original raw commit message without removing extra leading/trailing line breaks

From: Junio C Hamano <hidden>
Date: 2022-03-28 06:11:57

PMEase [off-list ref] writes:
quoted
On Mar 28, 2022, at 1:53 PM, Junio C Hamano [off-list ref] wrote:

PMEase [off-list ref] writes:

[jc: wrapped overly long lines]
quoted
I am using command "git show --format=raw <commit hash>" to get
raw commit object in order to verify the GPG signature in my
program to customize public key loading. However in the raw commit
object, extra line breaks before and after the commit message is
removed, which cause the signature verification failure as git
generates the signature without removing those line breaks.
"git show --format=raw <commit object name>" will not give "raw
commit object" to begin with.  It indents the message by four
spaces.

"git cat-file commit <commit object name>" is what you want, I
think.
[jc: wrapped overly long lines, moved response at the end to correct
top-posting]
Thanks for your response. "git cat-file" prints the commit message
without leading space on each line, however extra leading/trailing
line breaks of the commit message is still removed.
I think you are creating your commit incorrectly.  If a line is
missing in what cat-file prints, then the line is *NOT* in the
commit.  If I try the following:

----- >8 --------- >8 --------- >8 --------- >8 -----

C=$(
        cat <<\EOF | git commit-tree -p HEAD HEAD^{tree}

This "first line" deliberately is on the second line.
And after the "last line" of the log message, this commit
has extra blank lines at the end.


EOF
)

echo "begin"; git cat-file commit "$C"; echo "end"

----- 8< --------- 8< --------- 8< --------- 8< -----

I get:

begin
tree 5365fd773adaac0f84c4f07532eec8809f3f6f0e
parent abf474a5dd901f28013c52155411a48fd4c09922
author Junio C Hamano [off-list ref] 1648447791 -0700
committer Junio C Hamano [off-list ref] 1648447791 -0700


This "first line" deliberately is on the second line.
And after the "last line" of the log message, this commit
has extra blank lines at the end.


end

which is very much what I expect to see.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help