Steps to reproduce:
git init
git commit --allow-empty -m 'root'
echo foo > foo
git add .
git commit -m '[tag] foo'
git checkout @~
git format-patch master~..master
cat 0001-tag-foo.patch | git am
Expected: commit message generated by `git am` is `[tag] foo`
Actual: commit message generated by `git am` is `foo`
[System Info]
git version:
git version 2.31.1
cpu: x86_64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
uname: Linux 5.4.98-1-lts #1 SMP Sat, 13 Feb 2021 19:22:14 +0000 x86_64
compiler info: gnuc: 10.2
libc info: glibc: 2.33
$SHELL (typically, interactive shell): /bin/zsh
[Enabled Hooks]
On Thu, Jun 10, 2021 at 05:04:58PM +0200, Nikita Bobko wrote:
Steps to reproduce:
git init
git commit --allow-empty -m 'root'
echo foo > foo
git add .
git commit -m '[tag] foo'
git checkout @~
git format-patch master~..master
cat 0001-tag-foo.patch | git am
Expected: commit message generated by `git am` is `[tag] foo`
Actual: commit message generated by `git am` is `foo`
This is working as intended. See the "-k" option of git-am and
git-mailinfo (and also "-b" for mailinfo).
-Peff
Oh, I see, thank you, it works.
But actually, I am not sure that it's "expected" behavior. I would
expect git to preserve original message by default without any
additional flags. Shouldn't `--keep-non-patch` flag in `git am` be
enabled by default then?
On Thu, Jun 10, 2021 at 5:11 PM Jeff King [off-list ref] wrote:
On Thu, Jun 10, 2021 at 05:04:58PM +0200, Nikita Bobko wrote:
quoted
Steps to reproduce:
git init
git commit --allow-empty -m 'root'
echo foo > foo
git add .
git commit -m '[tag] foo'
git checkout @~
git format-patch master~..master
cat 0001-tag-foo.patch | git am
Expected: commit message generated by `git am` is `[tag] foo`
Actual: commit message generated by `git am` is `foo`
This is working as intended. See the "-k" option of git-am and
git-mailinfo (and also "-b" for mailinfo).
-Peff
On Thu, Jun 10, 2021 at 05:36:43PM +0200, Nikita Bobko wrote:
Oh, I see, thank you, it works.
But actually, I am not sure that it's "expected" behavior. I would
expect git to preserve original message by default without any
additional flags. Shouldn't `--keep-non-patch` flag in `git am` be
enabled by default then?
I'd be hesitant to change that, since it would break any communities
using other tags. I think 17635fc900 (mailinfo: -b option keeps
[bracketed] strings that is not a [PATCH] marker, 2009-07-15) has some
examples.
In your example, I think passing "-k" to both git-format-patch and
git-am is the right solution. But presumably that's a toy example. In
the real world, the person running "am" is probably not the same as the
one running format-patch (and if it is, probably something like
cherry-pick is a better solution anyway).
-Peff