[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnu-arch-users] microbranches: prism-merge vs multi-merge

From: Aaron Bentley
Subject: [Gnu-arch-users] microbranches: prism-merge vs multi-merge
Date: Fri, 21 May 2004 21:36:26 -0400
User-agent: Mozilla Thunderbird 0.5 (X11/20040306)

Hi all,

Just thought I'd share this insight. I used to see prism-commit as having roughtly the same result as multi-merge, but now I think prism-commit is better.

What are microbranches?
focused, feature-oriented branches. My tlasrc--errors--3 branch or tla--backbuilder--1 would be examples. They permit the maintainer to merge a set of changes at once, instead of having to cherry-pick. They are the opposite of a development or integration branch

What's multi-merge?
Multi-merge is strategy for producing microbranches in which one commits to the microbranches, then merges from the microbranches into the integration branch. I think of it as pull-merging. It's been implemented in

What's prism-merge?
Prism-merge is a strategy for producing microbranches in which one commits to a development branch, then applies those changes to a microbranch.

I came up with the idea of prism-merge independently, but I wasn't the first:

After discussion with Tom, I figured that the multi-merge strategy looked much simpler to implement, so I did that, and you can find a merge command in aba that does it. It just repeatedly star-merges from each of a list of source-branches until some changes are produced. Works pretty well.

I also like the fact that developing on microbranches forces me to make sure that the microbranches themselves work properly. But there is a downside: External merges.

When you're working a devel branch, it's good to periodically merge with the blessed branch. For tla, that's address@hidden/tla--devo--1.3. That way, you're ready when the maintainer wants to merge from you.

But with multi-merge, you must merge the same changes multiple times, and then you get to try combining the differing merges in your integration branch.

With prism merge, you probably merge first into the devel branch. In the microbranches, you can use whatever merge strategy makes sense. In some cases, this will mean replaying the devel merge. In others, it will mean merging directly from the blessed branch.

So in short, prism merge moves from the center out, and that gives you more flexibility when handling external merges.

Although multi-merge has been implemented for quite some time as an aba command, I don't know of any prism-commit implementation. Ask me again on Tuesday.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]