From: Jeff King <peff@peff.net>
To: Chris Webb <chris@arachsys.com>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: Editing the root commit
Date: Wed, 20 Jun 2012 15:48:24 -0400 [thread overview]
Message-ID: <20120620194824.GA32228@sigill.intra.peff.net> (raw)
In-Reply-To: <20120620193922.GB3192@arachsys.com>
On Wed, Jun 20, 2012 at 08:39:23PM +0100, Chris Webb wrote:
> Jeff King <peff@peff.net> writes:
>
> > But if the first commit is deleted (or reordered), then it is not
> > appropriate to detach to the root; we must detach to the first picked
> > commit, which we can only do after we see the final instruction sheet.
>
> It's worse than that isn't it? If you have
>
> A -- B -- C
>
> and the sheet says drop A, pick B, pick C, you can't detach to B. You want
> the commit B as a root (i.e. with no parent), not the commit B with parent
> A. You need to have the patch from A to B replayed as the first commit on an
> empty branch (only without the branch).
Oh, you're right. I think you would have to do some custom magic to make
the first commit without looking at HEAD, like:
1. Erase the index and working tree.
2. Apply the patch from B^ to B (where B is the first picked commit).
3. git-commit-tree manually with no parents.
4. Point HEAD to the newly made commit.
But there is a very good chance of step (2) causing conflicts, at which
point you would have to give control back to the user. And what is in
HEAD at that point that would give them a meaningful answer to "git diff
--cached" or similar?
I think the only thing you can do is make a fake sentinel commit (with
an empty tree) to put in HEAD, and then remove the sentinel immediately
after the first commit is put in place (making sure not to include it in
the first commit's parent list). Yuck.
-Peff
next prev parent reply other threads:[~2012-06-20 19:48 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-19 9:16 Editing the root commit Chris Webb
2012-06-19 10:09 ` Junio C Hamano
2012-06-19 11:17 ` Chris Webb
2012-06-20 9:32 ` Chris Webb
2012-06-20 18:25 ` Junio C Hamano
2012-06-20 19:29 ` Jeff King
2012-06-20 19:39 ` Chris Webb
2012-06-20 19:48 ` Jeff King [this message]
2012-06-22 20:50 ` Chris Webb
2012-06-22 21:35 ` Junio C Hamano
2012-06-22 22:02 ` Chris Webb
2012-06-22 22:26 ` Chris Webb
2012-06-22 22:50 ` Junio C Hamano
2012-06-23 7:20 ` Chris Webb
2012-06-26 15:04 ` git-commit bug (was Re: Editing the root commit) Chris Webb
2012-06-26 15:06 ` [PATCH] git-checkout: disallow --detach on unborn branch Chris Webb
2012-06-26 18:08 ` git-commit bug Junio C Hamano
2012-06-26 13:33 ` Editing the root commit Chris Webb
2012-06-26 13:36 ` [PATCH 1/2] rebase -i: support --root without --onto Chris Webb
2012-06-26 13:36 ` [PATCH 2/2] Add tests for rebase -i " Chris Webb
2012-06-26 19:20 ` [PATCH 1/2] rebase -i: support " Junio C Hamano
2012-06-26 19:38 ` Chris Webb
2012-06-26 20:05 ` Junio C Hamano
2012-06-26 20:11 ` Chris Webb
2012-06-26 21:24 ` Junio C Hamano
2012-06-26 21:27 ` Chris Webb
2012-06-20 19:35 ` Editing the root commit Chris Webb
2012-06-25 17:22 ` Martin von Zweigbergk
2012-06-19 11:50 ` jaseem abid
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=20120620194824.GA32228@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=chris@arachsys.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).