I'm amazed after having played with Monotone during the whole evening. Simply put, it is a distributed version control system, similar to CVS in the sense that it keeps track of changes across files and lets multiple people work at the same time with them. But, unlike CVS, it has many other cool features. The front page of its website contains a nice paragraph summarizing all available features, so I'm not repeating them here. But let me discuss here what has taken my attention.

First of all, its manual. It's great, a strange thing in free software projects. It starts by explaining a series of basic concepts, continuing with a quite complete tutorial, followed by several other chapters that I've not yet read. But at this point, I'm able to do basic stuff with Monotone, and even converted a project from an existing cvsroot. (Ok, ok, I know CVS very well, so this may have helped ;).

Then we have disconnected operation. Monotone works locally almost all the time; it only uses the network when you tell it to synchronize your local database with a server (or any other peer!). That is, you can start your daily work by pulling a fresh copy from the server, doing all your modifications in your system (even committing as much as you want), to later push your changes back to the server. In fact, this is like maintaining mini-branches all the time and merging them when you are ready to send your changes to someone else.

Another interesting point is its use of cryptography. All revisions are identified by SHA1 hashes, thus avoiding manual naming problems or meaningless version numbers (in case this seems problematic because of hash collisions, please read this). As regards to security, all changes are assigned to a key pair, thus being digitally signed by a RSA certificate.

At last, let me say that it's portable, written in C++ (yay! and it follows the standards!), and seems to be very stable already (it's self-hosting). If you are not happy with your version control system, give this utility a try! Looks very promising. (And I've left out several details that'd be worth mentioning too.)

Go to posts index

Comments from the original Blogger-hosted post: