Git development
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: PMEase <robin@pmease.com>
Cc: git@vger.kernel.org
Subject: Re: How to get the original raw commit message without removing extra leading/trailing line breaks
Date: Sun, 27 Mar 2022 23:11:50 -0700	[thread overview]
Message-ID: <xmqqy20u4ndl.fsf@gitster.g> (raw)
In-Reply-To: <5DAF0ABA-7905-491B-A1DC-291A2D7C2BB4@pmease.com> (PMEase's message of "Mon, 28 Mar 2022 14:01:06 +0800")

PMEase <robin@pmease.com> writes:

>> 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.

  reply	other threads:[~2022-03-28  6:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-28  5:42 How to get the original raw commit message without removing extra leading/trailing line breaks PMEase
2022-03-28  5:53 ` Junio C Hamano
2022-03-28  6:01   ` PMEase
2022-03-28  6:11     ` Junio C Hamano [this message]
2022-03-28  6:11   ` PMEase

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqy20u4ndl.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=robin@pmease.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox