LWN.net Logo

Advertisement

GStreamer, Embedded Linux, Android, VoD, Smooth Streaming, DRM, RTSP, HEVC, PulseAudio, OpenGL. Register now to attend.

Advertise here

The Monotone version control system

April 13, 2005

This article was contributed by Joe 'Zonker' Brockmeier.

Version Control Systems (VCS) have always been of great interest to the Linux and open source community, but the the topic has gained new life in recent weeks thanks to the BitMover announcement that it's ending development of its free (as in beer) tool. Since Subversion has already been ruled out, that leaves the door open for one of the many other open source VCS. One of the alternatives which has been considered by Linus Torvalds for kernel development is Monotone.

Monotone is a distributed version control system that supports 3-way merges, peer-to-peer synchronization and runs on several platforms -- Linux, Windows, Solaris, Mac OS X and other Unix-like systems. The project is available under the GPL and just a bit over two years old. The first release was created by Graydon Hoare and pushed out on April 6, 2003. The most recent release, 0.18, was announced on April 11.

Monotone has much to recommend it, feature-wise. It supports atomic commits, allows versioned file and directory renames (as opposed to CVS, where moving a file or directory causes loss of the file history) and uses SHA1 checksums to identify files, directories and revisions. Information about a source tree is kept in a SQLite database, which is synchronized against remote databases or the local working copy. The command set is relatively easy to pick up, and the documentation is very clear as well.

Torvalds does have a few gripes about Monotone, for example, he complains that it's "much harder than it should be to have throw-away trees due to the fact that they seem to be working on the assumption of 'one database per developer' rather than 'one database per tree'" though it is not necessary to follow the "one database per developer" model. Torvalds has also complained about the performance of Monotone; this issue, by itself, appears to have been sufficient to make him look elsewhere.

There was a brief discussion on the mailing list about the opportunity to boost awareness of Monotone, and it seems that the team is working on improvements. One user on the Monotone-devel mailing list complained that it took more than two hours to pull the source, using 0.17. According to the release notes for 0.18, the new release improves "most operations sped up by a factor of 2 or better; many sped up by several orders of magnitude." Torvalds also gets a special "thank you" in the notes.

LWN readers interested in examining the various open source VCS might find the Version Control System Comparison useful, as well as this essay on systems. The Monotone webpage also provides a list of other version control systems, should Monotone fail to meet your needs.

In the long run, BitMover's exit from kernel development version control may be a boon for the open source community. While the kernel team will have to deal with some short-term pain in finding a replacement, it may provide a helpful boost to open source VCS to reach parity or even, eventually, move ahead of BitKeeper's feature set.


(Log in to post comments)

Other distributed version control systems

Posted Apr 14, 2005 5:27 UTC (Thu) by sweikart (guest, #4276) [Link]

Here's a shorter list of free, distributed version control systems:

http://www.nongnu.org/arx/#Links

with a sentence describing each one.

-scott

Monotone vs. Git

Posted Apr 14, 2005 7:30 UTC (Thu) by ncm (subscriber, #165) [Link]

Amusingly, it has been pointed out on the monotone mailing list that Linus's "git" is essentially equivalent to (a bare-bones mock-up of) monotone's release 0.14. Since then the team has learned a lot, and made necessary, fundamental changes. Linus's program will need the same kind of work, assuming the newly speedy monotone doesn't immediately supplant it.

typo

Posted Apr 14, 2005 12:26 UTC (Thu) by zooko (subscriber, #2589) [Link]

The string literal attributed to Linus Torvalds isn't terminated.

typo

Posted Apr 14, 2005 12:30 UTC (Thu) by corbet (editor, #1) [Link]

Fixed.

We appreciate typo reports, but we appreciate them more when they are emailed to lwn@lwn.net. We'll see them sooner, and the article doesn't get cluttered with typo report comments. Guess I need to add that "report typo" button...

The Monotone version control system

Posted Apr 14, 2005 13:29 UTC (Thu) by zooko (subscriber, #2589) [Link]

I just updated <a href="http://zooko.com/revision_control_quick_ref.html"> http://zooko.com/revision_control_quick_ref.html </a>. It now gives a brief description of CVS, Subversion, GNU arch, ArX, Vesta, Aegis, monotone, DARCS, Codeville, and svk.

List of all SCMs for Linux

Posted Apr 15, 2005 1:07 UTC (Fri) by rickmoen (guest, #6943) [Link]

zooko's work is always good -- but I wanted to also call to people's attention my own comprehensive listing of all SCMs available for Linux. (zooko does link to it, as does David Wheeler's excellent page on the subject.)

I'm also very fond of Bazaar-NG author Martin Pool's comments. People who, like me, find his comments perceptive and enlightening will find more of the same in each Bazaar-NG tarball, as that promising project develops.

Rick Moen
rick@linuxmafia.com

Monotone used to be quite fast

Posted Apr 14, 2005 14:12 UTC (Thu) by emk (subscriber, #1128) [Link]

There's nothing inherently slow about Monotone--I've been testing it's performance on large trees since 0.7 or so. The recent releases since 0.14 have gotten quite a bit slower, but this has more to do with new, unoptimized code and lots of expensive sanity-checking.

The recommendation from Linus came at a particularly bad time...

Monotone used to be quite fast

Posted Apr 14, 2005 20:45 UTC (Thu) by graydon (subscriber, #5009) [Link]

yes, a lot of new, very slow sanity checking code went in, to prevent some classes of bug we let in in the 0.16 release cycle. then I packed my belongings for a long vacation (assuming a nice low-key few months with no new developments), which I am still enjoying, and will be until june.

linus just picked a bad time. when I was last doing stress and scalability work on monotone it could work -- a little slowly -- with the entire CVS-imported gcc history, stretching back to the 80s. this was a bigger history than linux. we will get back to that sort of speed once I can give it some real tuning.

The Monotone version control system

Posted Apr 14, 2005 23:24 UTC (Thu) by NCunningham (guest, #6457) [Link]

The changes in .18 didn't improve the speed in pulling the Monotone source itself, which was the test cw and I ran. With both .17 and .18, this takes in excess of an hour (256/64 ADSL here, but most of the time is CPU churn).

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds