From: Thomas Rast <trast@student.ethz.ch>
To: Junio C Hamano <gitster@pobox.com>
Cc: Yann Dirson <dirson@bertin.fr>,
Andreas Schwab <schwab@linux-m68k.org>,
Christian Couder <christian.couder@gmail.com>,
Thomas Rast <trast@student.ethz.ch>,
git list <git@vger.kernel.org>, Jeff King <peff@peff.net>
Subject: Re: [BUG] Cannot push some grafted branches
Date: Wed, 19 Dec 2012 14:12:56 +0100 [thread overview]
Message-ID: <87ip7yp4mf.fsf@pctrast.inf.ethz.ch> (raw)
In-Reply-To: <7vehinibpc.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Tue, 18 Dec 2012 08:09:35 -0800")
Junio C Hamano <gitster@pobox.com> writes:
> I do not understand why you even want to go in the harder route in
> the first place, only to complicate things?
>
> All you want to do is to craft a commit object that records a
> specific tree shape, has a set of parents you want, and has the log
> information you want. Once you have the commit, you can replace an
> unwanted commit with it.
[...]
> $ git checkout X^0 ;# detach
> $ git reset --soft A
> $ git commit -C X
[...]
> Is this not intuitive enough?
I still wouldn't recommend this approach in git-replace(1) for several
reasons:
* It does not generalize in any direction. For each field you may want
to change, you have to know a _specific_ way of getting just the
commit you want.
* More to the point of replacing the parent lists, while the above might
be expected of a slightly advanced git user, you get into deep magic
the second you want to fake a merge commit with an arbitrary
combination of parents. (No, you don't need to tell me how. I'm just
saying that fooling with either MERGE_HEAD or read-tree is not for
mere mortals.)
* The above potentially introduces clock skew into the repository, which
can trigger bugs (like rev-list accidentally missing out on some side
arm!) until we get around to implementing and using generation
numbers.
--
Thomas Rast
trast@{inf,student}.ethz.ch
next prev parent reply other threads:[~2012-12-19 13:13 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-11 14:39 [BUG] Cannot push some grafted branches Yann Dirson
2012-12-11 18:15 ` Junio C Hamano
2012-12-12 8:44 ` Yann Dirson
2012-12-12 10:54 ` Yann Dirson
2012-12-12 19:57 ` Junio C Hamano
2012-12-17 7:52 ` Yann Dirson
2012-12-17 8:56 ` Junio C Hamano
2012-12-17 10:30 ` Yann Dirson
2012-12-17 8:43 ` Thomas Rast
2012-12-17 10:40 ` Yann Dirson
2012-12-17 13:43 ` Christian Couder
2012-12-17 14:02 ` Yann Dirson
2012-12-17 20:03 ` Andreas Schwab
2012-12-17 21:14 ` Junio C Hamano
2012-12-18 11:00 ` Yann Dirson
2012-12-18 12:03 ` Johannes Sixt
2012-12-18 12:49 ` Thomas Rast
2012-12-18 13:41 ` Yann Dirson
2012-12-18 14:31 ` Thomas Rast
2012-12-18 16:24 ` Jeff King
2012-12-19 7:13 ` Johannes Sixt
2012-12-19 13:06 ` Jeff King
2012-12-18 16:09 ` Junio C Hamano
2012-12-19 8:29 ` Yann Dirson
2012-12-19 13:12 ` Thomas Rast [this message]
2012-12-19 20:07 ` Junio C Hamano
2012-12-21 12:47 ` Michael J Gruber
2012-12-21 16:58 ` Junio C Hamano
2012-12-22 16:38 ` Michael J Gruber
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=87ip7yp4mf.fsf@pctrast.inf.ethz.ch \
--to=trast@student.ethz.ch \
--cc=christian.couder@gmail.com \
--cc=dirson@bertin.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=schwab@linux-m68k.org \
/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.