git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 28, 2022, 06:11 UTC
Message-ID
<xmqqy20u4ndl.fsf@gitster.g>
In-Reply-To
<5DAF0ABA-7905-491B-A1DC-291A2D7C2BB4@pmease.com>
PMEase <robin@pmease.com> writes:
Show 19 quoted lines
>> On Mar 28, 2022, at 1:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> 
>> PMEase <robin@pmease.com> writes:
>> 
>> [jc: wrapped overly long lines]
>> 
>>> 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 <gitster@pobox.com> 1648447791 -0700 committer Junio C Hamano <gitster@pobox.com> 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.
Previous: PMEaseNext: PMEase
Message 4 of 5 in “How to get the original raw commit message without removing extra leading/trailing line breaks”
  1. PMEaseMar 28, 2022
  2. Junio C HamanoMar 28, 2022
  3. PMEaseMar 28, 2022
  4. Junio C HamanoMar 28, 2022
  5. PMEaseMar 28, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.