Why `git am -3` apply patches that don't normally apply?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux