From: Junio C Hamano <gitster@pobox.com>
To: Chris Webb <chris@arachsys.com>
Cc: git@vger.kernel.org, Elliot Wolk <elliot.wolk@gmail.com>,
Thomas Rast <trast@inf.ethz.ch>
Subject: Re: rebase --root conflicts with --committer-date-is-author-date
Date: Sat, 11 Apr 2015 23:19:37 -0700 [thread overview]
Message-ID: <xmqqwq1h50na.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <55296823.4010409@gmail.com> (Elliot Wolk's message of "Sat, 11 Apr 2015 14:29:55 -0400")
I think that the reason for this behaviour is that "rebase --root"
implicitly forces "rebase -i" to run (instead of the 'format-patch
piped to am'), and --committer-date-is-author-date is not supported
by the "rebase -i" codepath at all.
I see Thomas did "rebase --root" support in v1.6.2 era both in the
normal and interactive rebase codepaths, but df5df20c (rebase -i:
support --root without --onto, 2012-06-26) started forcing --root
rebase to always use the "rebase -i" codepath.
Teaching "rebase -i" to support --committer-date-is-author-date like
the normal rebase codepath is one thing, but I wonder why we force
"rebase -i" on people who merely wanted to do "--root". The way
df5df20c (rebase -i: support --root without --onto, 2012-06-26)
explains it does not read like a valid justification, at least to
me. It says:
Implicitly use rebase -i for non-interactive rebase of --root
without an --onto argument now that rebase -i can correctly do
this.
which is "because we can", not "because it is a good thing to do for
such and such reasons". This is an ancient change in v1.7.12 days.
Chris, do you remember if there was a reason why it was a bad idea
to teach the normal rebase codepath to handle "--root"? I think we
would have needed to allow "am" to apply a creation patch and start
a new history on an unborn branch in order to do so, but I am not
sure if there was a valid reason why such a change to "am" would
have been a bad idea.
Thanks.
Elliot Wolk <elliot.wolk@gmail.com> writes:
> ============
> version:
>
> git version 2.1.4
> Linux wolke-w520 3.19.3-towo.1-siduction-amd64 #1 SMP PREEMPT
> siduction 3.19-9 (2015-03-26) x86_64 GNU/Linux
> ============
> summary:
>
> if i do `git rebase --committer-date-is-author-date --root', the
> committer date is set to now, instead of set to the author date.
> when rebasing onto the first commit, it works perfectly well.
> ============
> reproduce:
>
> set -x
> cd
> mkdir test
> cd test
> git init
> echo line >> a; git add a; git commit -m 'jan1' --date '2015-01-01'
> echo line >> a; git add a; git commit -m 'jan2' --date '2015-01-02'
> echo line >> a; git add a; git commit -m 'jan3' --date '2015-01-03'
> git log --format=format:%s-%cD-%aD%n
> git rebase --committer-date-is-author-date HEAD^^
> git log --format=format:%s-%cD-%aD%n
> git rebase --committer-date-is-author-date --root
> git log --format=format:%s-%cD-%aD%n
> git rebase --committer-date-is-author-date HEAD^^
> git log --format=format:%s-%cD-%aD%n
> git rebase --committer-date-is-author-date --root
> git log --format=format:%s-%cD-%aD%n
> ============
> expected:
>
> jan3-Sat, 03 Jan 2015 13:28:06 -0500-Sat, 3 Jan 2015 13:28:06 -0500
> jan2-Sat, 02 Jan 2015 13:28:06 -0500-Fri, 2 Jan 2015 13:28:06 -0500
> jan1-Sat, 01 Jan 2015 13:28:06 -0500-Thu, 1 Jan 2015 13:28:06 -0500
> ============
> actual:
>
> jan3-Sat, 11 Apr 2015 14:28:06 -0400-Sat, 3 Jan 2015 13:28:06 -0500
> jan2-Sat, 11 Apr 2015 14:28:06 -0400-Fri, 2 Jan 2015 13:28:06 -0500
> jan1-Sat, 11 Apr 2015 14:28:06 -0400-Thu, 1 Jan 2015 13:28:06 -0500
>
> {full output: http://pastie.org/10086950}
> ============
> sorry if dupe/wrong-venue/poorly-formatted/incomprehensible. i tried.
next prev parent reply other threads:[~2015-04-12 6:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-11 18:29 rebase --root conflicts with --committer-date-is-author-date Elliot Wolk
2015-04-12 6:19 ` Junio C Hamano [this message]
2015-04-16 22:15 ` Chris Webb
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqwq1h50na.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=chris@arachsys.com \
--cc=elliot.wolk@gmail.com \
--cc=git@vger.kernel.org \
--cc=trast@inf.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.