mercurial

Erik Bågfors zindar at gmail.com
Tue Aug 9 13:58:57 BST 2005


Hi!

Have you taken a look at mercurial anything? It's always good to look
at the competition.  I'm not trying to start a "what's best" but just
looking at the ups and downs of it.  It can give ideas and also it
might be possible to borrow some code from them since it's written in
python.

I did take a look at it and it's very good in some regards, and less
good in some.

Some things I like
* merging from a different branch is just "hg pull
path/to/other/branch" followed by "hg update -m".

* merging keeps all metadata on each changeset, it keeps committer,
message etc. Then you have to do another commit to commit the merge. 
I like this very much. It is very darcs like. I know some of you don't
like it.  This means that you and me can have different history for
basically the same repository (since I may have committed some changes
in a different order than you did)

* very compressed storage.  Stores diffs mostly but now and then
stores the full file, to keep performance up (planned for bzr I
belive)

* Written in python (like bzr, I prefeer ruby but I can't get everything :) )

* "hg export" can be used for exporting a changeset and sending it in
mail, can then be imported with "hg import" (has been done with
plugins in bzr)

* Uses changeset for references.  If I want to know what I did in
changeset 145 I can do "hg export 145". Not do something between
revision 144 and 145 as in bzr.  This fits with my way of thinking.

* Used today by some kernel developers and other people.

* "hg serve" starts a built in webserver and serves the branch.

* Can work over ssh and http as well as local.

Things I don't like
* No cherry-picking (and none planned as far as I can see). Can be
done with export/import on the other hand.

* No "move" operator. You can "copy" a file but not move it.  A move
is done bycopying a file and then removing the other and committing. 
But if I merge with another branch that hasn't renamed that file yet,
the merge will not work.

* You can have things in your local branch that is not "checked out"
to your working dir. I find this very confusing.

Anyway, take a look at it.

Regards,
Erik




More information about the bazaar mailing list