Re: Bug: rebase -i creates committer time inversions on 'reword'
- Date: Sat, 14 Apr 2018 12:15:39 +0100
- From: "Phillip Wood" <phil@xxxxxxxxxxxxxxxxxxxxx>
- Subject: Re: Bug: rebase -i creates committer time inversions on 'reword'
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. 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.
Best Wishes
Phillip
> Perhaps something like this below is needed.
>
> diff --git a/ident.c b/ident.c
> index 327abe557f..2c6bff7b9d 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -178,8 +178,8 @@ const char *ident_default_email(void)
>
> static const char *ident_default_date(void)
> {
> - if (!git_default_date.len)
> - datestamp(&git_default_date);
> + strbuf_reset(&git_default_date);
> + datestamp(&git_default_date);
> return git_default_date.buf;
> }
>
>