Re: A modest proposal -- We need a patch penguin

Alexander Viro
2002-01-31T04:58:44Z

On Wed, 30 Jan 2002, Larry McVoy wrote:

> However, what you described *completely* misses the point. Linus isn't
> asking for an anti-patch, he doesn't want the bad patch in the revision
> history at all. He wants to be able to go backwards, across revisions,
> and remove stuff in the middle. He doesn't want the checkin comments,
> he doesn't want the data, he wants no sign the patch was ever in the
> revision history.

I can't speak for Linus, but my main problem with BK is similar to what
you'd described. Here's what I'm usually doing and what I'd like to
be able to do with BK:

Suppose I have 5 deltas - A, B, C, D, E. I want to kill A.

I add a branch that consists of B' (B backported to original) and
ABB'^{-1}. It joins the original at AB.

I backport C to B'. Now I've got B', C', ABC(B'C')^{-1}. Again, it
joins the original branch.

Repeat for D and E. Now I've got the following picture (apologies for BUAG):

* -B'-> * -C'-> * -D'-> * -E'-> *
| /
A crap
V V
* -B-> * -C-> * -D-> * -E-> *

_Now_ I change the direction of last arrow. Yes, it's more or less reverted
A. And now I want to consider the top branch as the main history.

IOW, what I want is ability to play revisionist. And it's not limited to
removing patches - if I've found a bug in A, I want to be able to add A-fix
and move it all way back to right after A. And merge them. B, C, D and E
might have changed from that, but that's what I want. Moreover, I might
have some junk left in the end (i.e. ABCDEA-fix == (AA-fix)B'C'D'E'noise)
and I'd really like to be able to say that (AA-fix)B'C'D'E' is the main
history now and other path (ABCDE A-fix noise^{-1}) is buried.

If you can give a way to do that - I'm happy.