public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
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.

  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$(echo .)com \
    --cc=chris@arachsys$(echo .)com \
    --cc=elliot.wolk@gmail$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=trast@inf$(echo .)ethz.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox