Subject: Re: [RFC] Applying a graft to a tree and "rippling" the changes through the history

From: Ryan Anderson <[email-masked]>
Date: Sun, 06 Nov 2005 21:22:33 -0500

Junio C Hamano wrote:
> Ryan Anderson <[email-masked]> writes:
> 
> 
>>I've written a tool that will take a single commit, add it as a parent
>>of another commit, and recreate the history above that second commit in
>>a fully compatible manner.
> 
> 
> I think the procedure is reproducible, which is a very nice
> property to have for a tool like this, but I am not sure what
> you mean by "in a fully compatible manner".  What are you
> compatible with?

Well, what I meant was, "It creates a history that is purely a superset
of the old history, so merges should work cleanly from the pre-graft
subhistory to the fully merged history."

But clearly I was too ... terse.

IOW, this should work perfectly, assuming neither tree has been pulled
into since the history was merged into historical-graft tree:

$ cd linux-head
$ git branch -b ryan-hacking HEAD
$ quilt push -a
$ git commit -a -m "Apply quilt tree"

$ cd ../linux-historical-graft/
$ git pull ../linux-historical-graft/

> Also another rhetorical, tongue-in-cheek question.  What is your
> plan to ripple the graft through to update signed tags?  ;-)

:) Well, since I can't resist answering your rhetorical question:

They signed a specific DAG.  I'm providing a richer, more complete DAG
that is a pure-superset of the one they signed.  It is not, however,
equivalent, so their signature is not related to the superset DAG I have
created.  In practice, however, I don't expect that any tag-signers
would state that there is a meaningful difference between the two DAGs,
from the perspective of their signature.

FYI - I don't think merging the trees like this is a good idea, from the
perspective of something like gitk - gitk took long enough to startup
and display something on my merged tree here that I gave up and killed
it off.