All of lore.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.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.