From: "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail•com>
To: "Jakob Haufe" <sur5r@sur5r•net>, git@vger•kernel.org
Cc: "Matthias Beyer" <mail@beyermatthias•de>
Subject: Re: git-am applies commit message diffs
Date: Sat, 07 Feb 2026 11:08:29 +0100 [thread overview]
Message-ID: <f6e4cdb4-ff82-4853-aca5-0c152f287286@app.fastmail.com> (raw)
In-Reply-To: <20260206184508.5a014df2@beer>
On Fri, Feb 6, 2026, at 18:45, Jakob Haufe wrote:
> On Fri, 06 Feb 2026 09:43:04 +0100
> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail•com> wrote:
>
>> Like Jacob said the cure is to use indentation for code blocks.
>
> That doesn't help here as stated by Michael on GH and his Mastodon
> post. Also, to make sure this doesn't get lost:
>
> From patch(1):
>
> ---
> If the entire diff is indented by a consistent amount, if lines end in CRLF,
> or if a diff is encapsulated one or more times by prepending "- " to lines
> starting with "-" as specified by Internet RFC 934, this is taken into account.
> After removing indenting or encapsulation, lines beginning with # are ignored,
> as they are considered to be comments.
> ---
Yeah, I think I understand now.
• patch(1) will apply all the diffs from git-format-patch(1), including
from the commit message
• git-am(1) will do the same
• git-am(1) will do the expected thing if you indent the diff in the
commit message
• For the git-format-patch(1) output with an indented diff in the commit
message: `git patch -p1` (I guess to strip the `a/` and `b/` from
git(1) diffs?) applies everything, including the `sleep(1)`[1]
My hodgepodge assumptions from 2024[2] were off. I thought that as long
as you did the following:
• Do not put the magic `From` string at the start of any line in the
commit message
• Do not put `---` at the start of the line in the commit message
• Do not put diff output unindented in the commit message since
git-am(1) will think that is the diff and not care about finding any
`–––`[3]
Then git-am(1) would apply the commit message and the diff part as
expected.
† 1: Related is https://github.com/i3/i3/pull/6564#issuecomment-3863278059 ,
specifically the link https://lists.gnu.org/archive/html/bug-patch/2026-02/msg00000.html
[2]: https://lore.kernel.org/git/ca13705ae4817ffba16f97530637411b59c9eb19.camel@scientia.org/
† 3: And my assumption here that only the diff in the commit message
would be applied in this case was wrong. Or else it would have been
more immediately obvious that the resulting commit was wrong.
> It's not exactly written in a straightforward way,
Yeah it’s not straightforward at all.
Something useful might be to apply all patches if they are all at the
same indentation level. I don’t see how it is useful to apparently strip
all indentation and find all the diffs that way.
> but it show that the behavior from patch is intentional. So even if
> git-am gets a fix, it only partly mitigates the problem as I'm pretty
> sure I will not be the last one to pass "git show"/"git format-patch"
> to "patch".
I don’t pass output from git(1) to patch(1). But I have often (like the
handful of times I’ve needed it) fallen back on using patch(1) for
patches/diffs that are thrown into email messages since it is more
forgiving than git-apply(1), and I guess also git-am(1).
The diff in the commit message doesn’t have the trailing whitespace that
I thought would be needed for patch application. Since git-commit(1) by
default cleans up trailing whitespace. But apparently patch(1) is fine
with that.
next prev parent reply other threads:[~2026-02-07 10:08 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-06 7:43 git-am applies commit message diffs Matthias Beyer
2026-02-06 8:04 ` Jacob Keller
2026-02-06 8:18 ` Matthias Beyer
2026-02-06 9:03 ` Jeff King
2026-02-07 14:57 ` [PATCH 0/3] commit-msg.sample: reject messages that would confuse "git am" Phillip Wood
2026-02-07 14:58 ` [PATCH 1/3] templates: add .gitattributes entry for sample hooks Phillip Wood
2026-02-07 14:58 ` [PATCH 2/3] templates: detect commit messages containing diffs Phillip Wood
2026-02-07 14:58 ` [PATCH 3/3] templates: detect messages that contain a separator line Phillip Wood
2026-02-07 21:27 ` Junio C Hamano
2026-02-07 21:38 ` Kristoffer Haugsbakk
2026-02-09 0:17 ` Junio C Hamano
2026-02-09 7:00 ` Jeff King
2026-02-09 10:42 ` Phillip Wood
2026-02-10 6:44 ` Jeff King
2026-02-09 6:57 ` [PATCH 0/3] commit-msg.sample: reject messages that would confuse "git am" Jeff King
2026-02-09 10:43 ` Phillip Wood
2026-02-09 11:07 ` Matthias Beyer
2026-02-10 6:46 ` Jeff King
2026-02-09 15:58 ` git-am applies commit message diffs Patrick Steinhardt
2026-02-10 2:16 ` Jacob Keller
2026-02-10 14:22 ` Patrick Steinhardt
2026-02-10 15:47 ` Junio C Hamano
2026-02-11 2:31 ` Jacob Keller
2026-02-11 2:34 ` Jacob Keller
2026-02-11 7:47 ` Jeff King
2026-02-11 15:23 ` Kristoffer Haugsbakk
2026-02-11 15:47 ` Junio C Hamano
2026-02-10 6:56 ` Jeff King
2026-02-13 14:34 ` [PATCH v2 0/2] commit-msg.sample: reject messages that would confuse "git am" Phillip Wood
2026-02-13 14:34 ` [PATCH v2 1/2] templates: add .gitattributes entry for sample hooks Phillip Wood
2026-02-13 14:34 ` [PATCH v2 2/2] templates: detect commit messages containing diffs Phillip Wood
2026-02-13 16:42 ` Kristoffer Haugsbakk
2026-02-13 18:08 ` Junio C Hamano
2026-02-14 14:46 ` Phillip Wood
2026-02-13 17:59 ` Junio C Hamano
2026-02-14 14:36 ` Phillip Wood
2026-02-14 15:42 ` Junio C Hamano
2026-02-13 17:41 ` [PATCH v2 0/2] commit-msg.sample: reject messages that would confuse "git am" Junio C Hamano
2026-02-06 8:59 ` git-am applies commit message diffs Florian Weimer
2026-02-06 9:24 ` Jeff King
2026-02-06 9:48 ` Florian Weimer
2026-02-06 10:08 ` Jeff King
2026-02-06 8:43 ` Kristoffer Haugsbakk
2026-02-06 17:45 ` Jakob Haufe
2026-02-07 10:08 ` Kristoffer Haugsbakk [this message]
2026-02-07 21:44 ` Kristoffer Haugsbakk
2026-02-08 0:11 ` [PATCH] doc: add caveat about roundtripping format-patch kristofferhaugsbakk
2026-02-08 1:39 ` Junio C Hamano
2026-02-08 17:18 ` Kristoffer Haugsbakk
2026-02-09 16:42 ` Phillip Wood
2026-02-09 17:59 ` Kristoffer Haugsbakk
2026-02-10 10:57 ` Phillip Wood
2026-02-10 16:00 ` Kristoffer Haugsbakk
2026-02-09 22:37 ` [PATCH v2] " kristofferhaugsbakk
2026-02-09 22:59 ` Junio C Hamano
2026-02-09 23:11 ` Kristoffer Haugsbakk
2026-02-10 11:02 ` Phillip Wood
2026-02-10 18:20 ` Kristoffer Haugsbakk
2026-02-12 22:28 ` [PATCH v3] doc: add caveat about round-tripping format-patch kristofferhaugsbakk
2026-02-12 23:19 ` Junio C Hamano
2026-02-13 14:41 ` Phillip Wood
2026-02-13 14:43 ` Kristoffer Haugsbakk
2026-02-13 18:02 ` Junio C Hamano
2026-02-10 0:53 ` [PATCH] doc: add caveat about roundtripping format-patch Christoph Anton Mitterer
2026-02-10 16:00 ` Kristoffer Haugsbakk
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=f6e4cdb4-ff82-4853-aca5-0c152f287286@app.fastmail.com \
--to=kristofferhaugsbakk@fastmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=mail@beyermatthias$(echo .)de \
--cc=sur5r@sur5r$(echo .)net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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