On Tue, Nov 01, 2005 at 10:08:04AM +0100, Petr Baudis wrote: > Dear diary, on Tue, Nov 01, 2005 at 01:25:54AM CET, I got a letter > where Theodore Ts'o <tytso@mit.edu> told me that... > > For an example of how to make it a first-class operation, it might be > > worthwhile to look at Chris Mason's "Mercurial Queues" extention to > > Mercurial: > > > > http://www.selenic.com/mercurial/wiki/index.cgi/MqExtension > > > > I've used it once or twice, and hg mq is definitely very nice and > > convenient, and it makes commits a first-class operation. On the > > other hand, I've found that the combination of quilt and > > Mercurial/BK/git works just fine, even for my own internal development > > of (for example) the e2fsprogs tree. > > Did anyone do any current detailed comparison between hg mq and StGIT? I don't think so, but I'll give it a rough try. I have not used stgit extensively, so please correct any mistakes below. Most of the differences center around the ways we store patches. Both tools make patches into commits during push. This allows the various history commands to see the currently applied patches. Both tools allow you to make changes to files without running some form of quilt add first. StGIT has the ability to rebase patches via three-way merge. This is still on my todo list for mq. StGIT patch storage is very different from quilt and mq. StGIT keeps git commit/tree objects around for patches that have been applied. It then stores a directory with metadata about the patch (author/description etc) and the ids of the git commit objects. In StGIT, importing new patches seems to require stg import, and exporting patches requires stg export (or a similar git command). But once the patches are stored in stgit, push/pop will be very fast. mq is closer to quilt. The patches are stored as patches, and hg qpush is very similar to importing a patch. This means metadata must be stored at the top of the patch in some form the import code can understand (it tries to be smart about this). hg qrefresh will update the patch file, so the patch is always up to date wrt to the hg repo. You can import/export patches with hg commands, or by copying patches into/from the .hg/patches directory. This also means you can take a quilt patch dir, copy it into .hg/patches and just start using mq. mq has some support for putting the patches directory under revision control (as a separate repository). Most of the other differences come from differences between hg and git. I'm not sure if stgit has some form of annotate, but it's a nice way to find out which patch changed a given loc in hg/mq. -chris - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Wed Nov 02 01:12:48 2005
This archive was generated by hypermail 2.1.8 : 2005-11-02 01:12:52 EST