Re: cherry-pick strangeness

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

 



On Thu, Jun 13, 2019 at 3:42 PM Vincent Legoll <vincent.legoll@xxxxxxxxx> wrote:
>
> Hello,
>
> I stumbled upon a strange behavior of cherry-pick,
> running the attached script yields different results
> from running the same command lines manually in
> an interactive shell, one after the other.
>
> I searched the man page and found no indications
> that that should act in this way. It looks like the CLI
> args "--ff" & "--no-ff" or the absence of it are not
> doing the same in a script as in an interactive shell.
>
> I  asked in the IRC channel, and was asked to report
> it here.
>
> I tried to reproduce it in various environments, I
> ran it in Centos 7, debian 9, ubuntu bionic & cosmic,
> alpine & fedora, in docker containers, all giving the
> same results. The git versions tested range from
> 1.8.3.1 to 2.21.0.
>
> Trying to reproduce, I created the attached script,
> which reports 3 times "SAME", whereas the case
> using "--no-ff" should print "DIFF", if I'm not wrong
> in reading its manpage description.
>
> What am I missing ?

When you cherry-pick a commit, it reapplies its diff on top of a
(usually different) commit, preserving the author name/email/date, but
throwing away the committer name/email/date -- instead using your
name/email and the time of the cherry-pick for the committer.  Since
you are transplanting on the same commit, and you created both the
original commit and the cherry-pick, the only thing that can be
different is the committer timestamp.  Git records timestamps down to
1-second resolution.  If you run in a script, odds are that the
original commit and the cherry-pick both run within the same second
(though not always), and thus you end up with precisely the same
commit.  When you run interactively, you take longer than a second
between commands, and thus have a different committer date which
naturally will have a different sha1sum.



[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