Re: Bug: rebase -i creates committer time inversions on 'reword'
- From
- Phillip Wood <phillip.wood@talktalk.net>
- Date
- Apr 16, 2018, 09:48 UTC
- Message-ID
- <ba17074b-865e-32ba-908d-0d94bedc50ad@talktalk.net>
- In-Reply-To
- <nycvar.QRO.7.76.6.1804141444060.234@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
On 14/04/18 14:11, Johannes Schindelin wrote:
Show 35 quoted lines
> Hi,
>
> On Sat, 14 Apr 2018, Phillip Wood wrote:
>
>> On 13/04/18 17:52, Johannes Sixt wrote:
>>>
>>> I just noticed that all commits in a 70-commit branch have the same
>>> committer timestamp. This is very unusual on Windows, where rebase -i of
>>> such a long branch takes more than one second (but not more than 3 or
>>> so thanks to the builtin nature of the command!).
>>>
>>> And, in fact, if you mark some commits with 'reword' to delay the quick
>>> processing of the patches, then the reworded commits have later time
>>> stamps, but subsequent not reworded commits receive the earlier time
>>> stamp. This is clearly not intended.
>>
>> Oh dear, I think this is probably due to my series making rebase commit
>> in-process when the commit message isn't being edited. I didn't realize
>> that git cached the commit date rather than using the current time when
>> calling commit_tree_extended(). I'll take a look at it next week.
>
> Thanks.
>
> However, a quick lock at `git log @{u}.. --format=%ct` in my
> `sequencer-shears` branch thicket (which I rebase frequently on top of
> upstream's `master` using the last known-good `rebase-merges` sub-branch)
> shows that the commits have different-enough commit timestamps. (It is
> satisfying to see that multiple commits were made during the same second,
> of course.)
>
> So while I cannot find anything in the code that disagrees with Hannes'
> assessment, it looks on the surface as if I did not encounter the bug
> here.
>
> Curious.That's strange (I'd have expected the picks after recreated merges to have the earlier timestamps than the merge), if I do 'git rebase -i --force-rebase --exec="sleep 2" @~5' then all the new commits have the same timestamp.
Show 8 quoted lines
> FWIW I agree with Hannes' patch. > >> I think 'git am' probably gives all patches the same commit time as well >> if the commit date is cached though it wont suffer from the time-travel >> problem. > > I thought that `git am` was the subject of such a complaint recently, but > I thought that had been resolved? Apparently I misremember...
I had a quick look and couldn't see anything about that, it looks to me like it just calls commit_tree() and only does anything to change the default commit date if '--committer-date-is-author-date' was given.
Best Wishes
Phillip
> Ciao, > Dscho >