Einführung die Versionsverwaltung mit monotone

Mathias Weidner hat eine deutschsprachige Einführung in die Versionverwaltung mit monotone veröffentlicht. Er behandelt darin die Grundlagen der verteilten Versionsverwaltung, die ersten Schritte mit monotone, sowie die täglich anfallende Arbeitspraxis mit einem Versionskontrollsystem. In späteren Kapiteln widmet sich Mathias auch erweiterten Themen, etwa wie monotone auf die individuellen Bedürfnisse des Nutzers angepasst werden kann und liefert weitere nützliche Hinweise für Ein- und Umsteiger von anderen Versionskontrollsystemen.

Das Buch ist CC BY-SA 3.0 lizensiert und kann als Paperback über lulu bezogen werden. Eine Vorversion in PDF-Format ist ebenfalls verfügbar; da der Autor die Quellen selbst in monotone verwaltet, sollten auch diese demnächst verfügbar sein.

Vielen Dank an Mathias für seine Bemühungen!

mtn-browse 0.72 and accompanying Perl library released

Tony Cooper announced a new release of his Monotone Browser software and also a new version of the underlying Monotone::AutomateStdio Perl library.

Both packages are now compatible with the most recent version of monotone, 0.99.1. Additionally, mtn-browse also supports all the new selector functions introduced in monotone 0.99 and is able to restrict revision and file histories to specific branches.

Many thanks to Tony for his outstanding work! I’ll update the MacPorts packages in a few…

Moments of love

There are certain moments in my life where I feel this love. Love and satisfaction. In these moments I do not regret at all to still work for an “underdog” version control system like monotone and have not converted to the dark side of the moon (read: git). One of these moments was today, when I did a merge between two branches.

See, many people working with Subversion or even git are annoyed of its merge behaviour. Sometimes they even fear to merge because hell breaks loose if the source branch moved files or even directories (yikes!) around. I cannot tell how often I had to resolve tree conflicts by hand in Subversion and I also cannot tell how often git forced me to clean my workspace from uncommitted or stashed changes before I was able to pull new stuff in.

Today now with monotone, I propagated the latest changes from the main branch to my little source-tree-cleanup branch. The latter moves many files and even whole directories around, so one would expect merge chaos in an ordinary version control system if files inside these moved directories would have been changed, or even new files would have been added, in the main branch in the meantime, right?

Not so with monotone. It not only tracks the file identity and rename history for files, but also for directories, so the merge went flawlessly without manual intervention:

$ mtn propagate net.venge.monotone net.venge.monotone.source-tree-cleanup
mtn: propagating net.venge.monotone -> net.venge.monotone.source-tree-cleanup
mtn: [left] 4f505ed0817cef6a34e1cc404b0511426a15fef9
mtn: [right] ec9269fa9ddd7b7e2d4716610241a7577159ba9d
mtn: [merged] 1b5c865085537cebd09b5e8481fba1eebfd63a03

And the update afterwards was no exception:

$ mtn update
mtn: updating along branch 'net.venge.monotone.source-tree-cleanup'
mtn: adding test/func/diff_order hinzu
mtn: adding test/func/diff_order/driver.lua hinzu
mtn: updating NEWS
mtn: updating src/cmd_diff_log.cc
mtn: updating src/cmd_list.cc
(some context: ./test/func was ./tests before and ./src was ./)

Call me fanboy, but I love this version control system!

monotone activity roundup

If you remember my earlier post(s) you probably ask where the highly anticipated version one dot zero remains. Originally we planned to release it by the end of 2010, but we couldn’t really meet that date because we really wanted to polish a couple of things before releasing it. So what is the new plan then?

Well, we agreed that we want to release not later than by the end of Q1 2011 and if you look at our RoadMap you see that most stuff is already worked on, but you also see that we have quite a lot to do.

Core Monotone

Stephen did a great job over the last couple of weeks and reviewed our manual: He restructured the commands section, included many cross references, reworked and clarified many sections and purged old contents.

Richard, Stephen and Lapo worked on the wiki and tagged contents for certain user groups, i.e. users and developers. They also reviewed and cleaned up many pages which are often looked after and accessed. While all this is not quite finished yet, it already looks a bit better than before.

Richard and me fixed a couple bugs that have been reported since 0.99. Right now the tracker looks more or less green with only two issues left open.

Beside the issues I’ve been working privately on the source tree cleanup branch and got some help from Richard here as well. This branch basically moves tests and sources around and puts them into a proper directory structure, so we do not clutter the main directory with sources, documentation, utilities and other stuff. I hope I can finish this branch next – only some work on the documentation is missing – and can merge that soon to the trunk.


Three others news are not about monotone itself, but related to it: usher, indefero and guitone.

Richard is currently preparing usher’s sources for packaging. We learned a lot about a proper usher setup when we configured usher with indefero on our own server instance, code.monotone.ca, and while Richard used that knowledge to bring usher forward, I reworked the sources and documentation of the SyncMonotone plugin in indefero.

Beside that I’m also working on including a graphical branch view to guitone. Work has gotten somewhere already as you can imagine from the screenshot, but there are a couple of subleties to fix and clean before I’ll release that actually. Packaging this version will be kind-of fun; yesterday for example I stumbled upon a crash in libgvc after I moved the Graphviz libraries into the Mac OS X application bundle (which is needed for easy deployment), Windows packaging hasn’t even be started in this regard and I also need to investigate further if and how Graphviz’ Common Public License (CPL) allows me to distribute its binaries with my binaries at all.


So you see we’re not lazy, but we all have so many things to do that it will just take a little longer. So stay tuned and thanks for your continued support!

monotone docathon on Sunday, 18:00 UTC

The monotone team holds a “docathon” – a small documentation sprint – next Sunday, Dec 19th 2010, starting at 18:00 UTC for approx. 6hrs. During this time we meet on IRC and want to collaboratively tidy the wiki pages, further improve the manual, update INSTALL and cleanup other text-based files and more for the upcoming 1.0 release.

So if you want to lend a helping hand to your favourite version control system, just drop by on IRC, say hello and we’ll quickly get in contact with you 🙂

See you on Sunday!

guitone 1.0rc5 released

I’m proud to announce the immediate release of guitone 1.0rc5. This fifth release candidate requires monotone 0.99.1 or later. The plan is to release guitone 1.0 final together with monotone 1.0 final by the end of this year.

Amongst some minor bug fixes, this release also features a new “server mode” with which remote monotone databases can be explored (requires compatible netsync servers with remote automation permissions).

The tarball and a Mac OS X disk image can be downloaded already, a Windows binary should follow shortly.

As always, please report bugs if possible. And I’m still looking for more translators – if you’re interested, drop me a note.

Thanks for reading, Thomas.

monotone 0.99.1 released (updated)

The monotone team just released 0.99.1 of its version control system. This is a minor patch release which fixes two regressions:

  1. If monotone 0.99 was built on x86_64, a missing variable initialization lead to a crash when parsing netsync URLs.
  2. monotone 0.99 reported wrongly 12.1 as automate interface version number, whereas this should have been 13.0.

The release can be downloaded at the usual location. (Update: A windows installer is ready to download as well, thanks to Stephen.) Sorry for the recent release flood, we promise to cool now for a while…

Thanks for your ongoing support, Thomas.

monotone 0.99 released (Updated)

[Update] Unfortunately some last minute changes make this release break on x86_64 – the issue has been fixed in the meantime, the patch is available here. My apologies, we’ll put out a new release shortly. [/Update]

We, the monotone developers, are very proud to release version 0.99 of our distributed version control system.

This release contains almost countless bug fixes, changes and new features, so I’m listing only the outstanding ones here:

  • Selectors have been overhauled to support the calculation of common sets of revisions, like e.g. differences, ancestors, parents or children of input revisions.

  • Monotone’s URI syntax has been extended and is now the default for all kinds of netsync actions (the old syntax remains available until 2.0 though).

  • All netsync commands now come with a “dry-run” mode which shows incoming and outgoing changes, such as revisions and certs.

  • The command line UI was cleaned up and improved a lot and now supports negatable and completable options amongst other things.

  • Many automate commands have been added and existing one improved.

  • Monotone regained its manual page – automatically generated from the command tree – which is also available localized through the new ‘manpage’ command.

A complete list of changes is available in the NEWS file. The tarball can be downloaded here – binaries are posted there as they come in.

Finally, this release also marks the beginning of a new version numbering scheme, where we try to maintain stable versions up to a certain point and add only non-breaking changes as minor releases.

The upcoming version 1.0 now is such a stable release, actually the first one after more than 6 years of development. It will only contain bug fixes and documentation improvements, but no additional new features, and is planned in Q4 2010.

Thank you all for your ongoing support!

– on behalf of the monotone team.