public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: kristofferhaugsbakk@fastmail.com
Cc: git@vger.kernel.org,  Kristoffer Haugsbakk <code@khaugsbakk.name>,
	Matthias Beyer <mail@beyermatthias.de>,
	 Christoph Anton Mitterer <calestyo@scientia.org>,
	 Matheus Tavares <matheus.tavb@gmail.com>,
	 Chris Packham <judge.packham@gmail.com>,
	 Jakob Haufe <sur5r@sur5r.net>
Subject: Re: [PATCH] doc: add caveat about roundtripping format-patch
Date: Sat, 07 Feb 2026 17:39:11 -0800	[thread overview]
Message-ID: <xmqqjywo9fpc.fsf@gitster.g> (raw)
In-Reply-To: <format-patch_caveats.281@msgid.xyz> (kristofferhaugsbakk@fastmail.com's message of "Sun, 8 Feb 2026 01:11:17 +0100")

kristofferhaugsbakk@fastmail.com writes:

> From: Kristoffer Haugsbakk <code@khaugsbakk.name>
>
> git-format-patch(1), git-send-email(1), and git-am(1) deal with
> formatting commits as patches, sending them (perhaps directly), and
> applying them, respectively. Naturally they use a few delimiters to mark
> where the commit message ends. This can lead to surprising behavior when
> these delimiters are used in the commit message itself.
>
> git-format-patch(1) and git-send-email(1) will accept any commit message
> and not warn or error about these delimiters being used.[1]
>
> Moreover, the presence of unindented diffs in the commit message will
> cause git-am(1) to apply both the diffs from the commit message as well
> as the patch section.[2]
>
> It is unclear whether any commands in this chain will learn to warn
> about this. One concern could be that users have learned to rely on
> the three-dash line rule to conveniently add extra-commit message
> information in the commit message, knowing that git-am(1) will
> ignore it.[4]
>
> All of this is covered already, technically, However, we should spell
> out the implications.
>
> † 1: There is also git-commit(1) to consider. However, making that
>      command warn or error out over such delimiters would be disruptive
>      to all Git users who never use email in their workflow.
> [2]: Recently patch(1) caused this issue for a project, but it was noted
>      that git-am(1) has the same behavior[3]
> [3]: https://github.com/i3/i3/pull/6564#issuecomment-3858381425
> [4]: https://lore.kernel.org/git/xmqqldh4b5y2.fsf@gitster.g/
>
> Reported-by: Matthias Beyer <mail@beyermatthias.de>
> Reported-by: Christoph Anton Mitterer <calestyo@scientia.org>
> Reported-by: Matheus Tavares <matheus.tavb@gmail.com>
> Reported-by: Chris Packham <judge.packham@gmail.com>
> Helped-by: Jakob Haufe <sur5r@sur5r.net>
> Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
> ---
>
> Notes (series):
>     There might be other things to do here. Mention it in gitfaq(5)?
>     
>     § Trailers
>     
>     • Reported-by: Matthias Beyer <mail@beyermatthias.de>
>       • From this thread
>     Reported-by: Christoph Anton Mitterer <calestyo@scientia.org>
>       • From https://lore.kernel.org/git/ca13705ae4817ffba16f97530637411b59c9eb19.camel@scientia.org/T/#u
>     Reported-by: Matheus Tavares <matheus.bernardino@usp.br>
>       • From https://lore.kernel.org/git/d0b577825124ac684ab304d3a1395f3d2d0708e8.1662333027.git.matheus.bernardino@usp.br/#t
>     Reported-by: Chris Packham <judge.packham@gmail.com>
>       • From https://lore.kernel.org/git/CAFOYHZC6Qd9wkoWPcTJDxAs9u=FGpHQTkjE-guhwkya0DRVA6g@mail.gmail.com/
>     
>     (These were all linked in https://lore.kernel.org/git/20260206090358.GA2761602@coredump.intra.peff.net/ )
>     
>     Helped-by: Jakob Haufe <sur5r@sur5r.net>
>       • For the part about patch(1): https://lore.kernel.org/git/f6e4cdb4-ff82-4853-aca5-0c152f287286@app.fastmail.com/T/#mc389dbd2ae02a007cbe57cd16ca4790ecc5a84f7

The space after three-dash line is to give additional information to
help readers, but the above does not qualify as one.

> +Furthermore, the presence of an unindented diff in the commit message
> +will not only cut the message short but cause that very diff to be
> +applied, along with the patch in the patch section.

A line that matches "^diff " is taken as the end of the log message,
and everything that follows is passed to the patch application
machinery, and the above description is a consequence of that.  If
you have more than one such diff, they may be either applied, or
some of them may not match the patch target and the whole thing may
be rejected.  Neither is a happy outcome.

Queued.  Thanks.

  reply	other threads:[~2026-02-08  1:39 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
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 [this message]
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=xmqqjywo9fpc.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=calestyo@scientia.org \
    --cc=code@khaugsbakk.name \
    --cc=git@vger.kernel.org \
    --cc=judge.packham@gmail.com \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=mail@beyermatthias.de \
    --cc=matheus.tavb@gmail.com \
    --cc=sur5r@sur5r.net \
    /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