Re: Git Evolve
- Date: Thu, 4 Oct 2018 10:29:11 -0700
- From: Stefan Xenos <sxenos@xxxxxxxxxx>
- Subject: Re: Git Evolve
Gerrit uses notes and branches of meta-commits internally for its
database, but it still uses the change-id footers to associate an
uploaded commit with a change within its database.
On Thu, Oct 4, 2018 at 9:05 AM, Jakub Narebski <jnareb@xxxxxxxxx> wrote:
> Junio C Hamano <gitster@xxxxxxxxx> writes:
>> Stefan Xenos <sxenos@xxxxxxxxxx> writes:
>>> What is the evolve command?
>>> - Systems like gerrit would no longer need to rely on "change-id" tags
>>> in commit comments to associate commits with the change that they
>>> edit, since git itself would have that information.
>>> Is anyone else interested in this? Please email me directly or on this
>>> list. Let's chat: I want to make sure that whatever we come up with is
>>> at least as good as any similar technology that has come before.
>> As you listed in the related technologies section, I think the
>> underlying machinery that supports "rebase -i", especially with the
>> recent addition of redoing the existing merges (i.e. "rebase -i
>> -r"), may be enough to rewrite the histories that were built on top
>> of a commit that has been obsoleted by amending.
>> I would imagine that the main design effort you would need to make
>> is to figure out a good way to
>> (1) keep track of which commits are obsoleted by which other ones
>> [*1*], and
>> (2) to figure out what histories are still to be rebuilt in what
>> order on top of what commit efficiently.
>> Once these are done, you should be able to write out the sequence of
>> instructions to feed the same sequencer machinery used by the
>> "rebase -i" command.
> Well, that assumes that "rebase -i" can correctly recreate merges, if
>> [Side note]
>> *1* It is very desirable to keep track of the evolution of a change
>> without polluting the commit object with things like Change-Id:
>> and other cruft, either in the body or in the header. If we
>> lose the Change-Id: footer without adding any new cruft in the
>> commit object header, that would be a great success. It would
>> be a failure if we end up touching the object header.
> Doesn't Gerrit use git-notes instead of 'Change-Id:' trailer nowadays?
> Notes transport is quite easily controlled; the problem with notes merge
> does not matter for this use.
> Jakub Narębski