Similarities
- distributed, so each clone has fully history
- works on multiple platforms, ie. Windows, Linux, BSD
- can create a new revision from any revision at any time (lightweight branches)
- allows customisation globally or per workspace. monotone=
monotonerc
, Mercurial=hgrc
- allows pushing/pulling/cloning with ssh
Differences
- monotone does not give each revision a sequential integer ID, Mercurial does
- monotone uses certs for core functionality such as branch membership, author, etc
- monotone allows adding certs on revision for custom user information. eg.
x-our-bug-id = #567
- monotone certs are cryptographically signed
- monotone certs + trust hooks can be used to ignore revisions
- tags in monotone are certs, in Mercurial they are stored in a .hgtags file which must be merged if necessary
- monotone history is stored in an SQLite database file and can be located anywhere.
Mercurial history is stored in a
.hg
folder inside the workspace.
- monotone does not use branch/author/date to calculate revision ID, Mercurial does. This means
merging the same 2 revisions to produce the same result gives the same revision in monotone, Mercurial gives different revisions.
- monotone tracks renames explicitly, Mercurial uses add+remove