git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Why `git am -3` apply patches that don't normally apply?
@ 2022-07-03 12:11 Yuri Kanivetsky
  2022-07-04 19:23 ` Elijah Newren
  0 siblings, 1 reply; 4+ messages in thread
From: Yuri Kanivetsky @ 2022-07-03 12:11 UTC (permalink / raw)
  To: git

Hi,

From what I can see w/o `-3` `git am` follows the `patch`'es behavior.
And the `patch`'es behavior is if there are lines in a patch that
doesn't match the lines in the source file, it fails. For example, a
source file:

11
2
3

A patch:

 1
 2
-3
+33

But `git am -3` will apply such a patch. That is, `patch` sees that
the first line changed and that prevents it from applying the patch,
but `git am -3` decides that it's okay. Why is that?

A script that reproduces the issue:

    set -eux

    mkdir a
    (cd a
    git init
    echo '1
    2
    3' > a
    git add a
    git commit -m 1,2,3
    sed -Ei 's/3/33/' a
    git add a
    git commit -m '3 -> 33'
    git format-patch -1 HEAD)

    mkdir b
    (cd b
    git init
    echo '11
    2
    3' > a
    git add a
    git commit -m 11,2,3

    git remote add a ../a
    git fetch a

    cat a
    cat ../a/0001-3-33.patch
    git --no-pager log --oneline --graph --all
    git am "$@" ../a/0001-3-33.patch  # try it w/ and w/o -3
    git --no-pager log --oneline --graph --all)

A couple of links, just in case, which have more information and show
where it comes from:

https://stackoverflow.com/a/25847019/52499
https://gist.github.com/x-yuri/9907d5b9cbf29e84d510902a776741df
https://gist.github.com/x-yuri/57d08f6afb10a89856d6e6a62abe30d4

Regards,
Yuri

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-06  0:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-03 12:11 Why `git am -3` apply patches that don't normally apply? Yuri Kanivetsky
2022-07-04 19:23 ` Elijah Newren
2022-07-05 18:09   ` Junio C Hamano
2022-07-06  0:19     ` Yuri Kanivetsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).