New Version Control System (VCS). We switched to Mercurial on 2006-04-22.

The last days AlexanderSchremmer and ThomasWaldmann discussed and played a bit with GNU arch alternatives.

Why switch?

  1. Future? - tla author Tom Lord seems to have stopped developping tla and is currently freshly implementing revc (kind of arch 2.0). Some other people formerly working on tla seem to work on bazaar, bazaar-ng or other VCSes now. tla is not unmaintained, someone was found who takes care of it.

  2. Speed - tla is a bit slow sometimes. This is no big problem and I really don't care if something better is a bit slower than something worse.

  3. Usage - tla usage is sometimes a bit complicated.

  4. Web UI - archzoom can only be made usable by using a revlib, and such a revlib consumes some GB hdd space. Even with a revlib, it sometimes leaves some "dirt" behind when working. The usual way to fix this seems to be a cron script regularly cleaning up. I find this a bit awkward.

  5. arch and archzoom seem to fall over branches with restricted access.
  6. Multi-Platform - running tla on win32 seems to have some troubles. I don't know details, but maybe Alexander can tell more here.

    • Mainly, tla was designed around posix file system semantics, relying heavily on file system features like its extensive usage of subdirectories. Especially this point leads to paths that are longer than 256 characters which makes it unusable on Windows (without SFU). Note that there have been attempts to shorten path names in forks of tla.
  7. Age - there seem to be other, even better, simpler and faster VCSes out there now, see next section.

Alternative(s)

Mercurial (hg)

Mercurial seems to be a new, small, fast, nice and easy VCS implemented in Python (and a small C lib for speed when doing diffs). It is used by Xen and some other projects and has been seen to scale up to linux kernel repository size.

There is a converter that can convert e.g. moin--main--2.0 to a Mercurial repository (branch relations not included).

Installation and usage on Linux seems to be very easy and it even includes some cgi / builtin web server for offering web access. It also works on win32 and Mac OS X, please test this to make sure.

Links
  • http://www.selenic.com/mercurial/wiki/index.cgi

    • Fine to see a moin wiki about that

  • Like git, this was developed this year to replace BitKeeper. Its interoperability and migration capability with git is excellent. Written in Python. Seems to me to be a competive, even better alternative to git.

    bazaar-ng (bzr)

    Don't confuse this with bazaar (baz), baz is just a more useable tla-clone, but the future seems to be bzr. bzr is inspired by baz and others and is written in Python. It is supported by ubuntu and mark shuttleworth.

    codeville (cdv)

    codeville is a very modern VCS implemented in Python which probably sets the current standars in conflict resolution. is developed by the cohen brothers (bram is well known for bittorrent), but seems to lack the momentum that hg (and maybe also bzr) have. It has more features than hg currently, but mailing list seems rather dead recently.

    git

    I am very keen on this new system developed by Linus Torvalds this year. It is very capable and should be excellent in conflict resolution situation and merging. Furthermore, it might be useful in situations where a wiki web is copied into two different places, evolved separately and then merged back and made consistent. I do not have personal experience.

    In the four months since this page was started, Git has kept improving. Version 1.0, 1.1, and 1.2 have been released, new functionnality has been added as the need surfaced, speed and efficiency have been improved even further. The documentation, which was already quite extensive, now includes a good tutorial and a good "cheat sheet" which make Git friendlier to beginners. Several important projects are in the process of moving to Git, including Wine, freedesktop.org's X server, and the Cairo library. As far as I know, the Cygwin port works well, and the Cygwin developers have demonstrated their willingness to work on some performance issues that Git has unearthed. The top two items that I find missing from Git are a native Windows port and the GUIs one has come to expect from VCSs these days (an Eclipse plugin and Tortoise-like file browser integration). Still, I'm amazed by the maturity Git has attained, less than a year after its inception. -- AdrienBeau

    BTW Git is rather hungry for disk space

    There are some articles from mid to end 2005 dealing with git and mercurial comparisons. They say that git is not storing deltas (or compressed delta) , but compressed hashed contents (revisions) - which consumes more disk space.

    Mercurial is not perfect either, it still doesn't have full support for renames, for example...

    monotone

    State of the art system currently used for many projects.

    <njs> said:
    I guess I should be a good advocate and at least say something about why monotone is not written in python :-)
    
    That was actually one of the first questions I asked graydon when I first found monotone, and he actually had a better answer than I've ever heard before the answer was "because it's the only pragmatic language with a powerful type system, and I like powerful type systems because they let me declare lots of infinitely large classes of bugs impossible to express" and monotone's code is really written to make this philosophy true, it's not at all like most C++ I've seen, very nice to hack on, lots of attention paid to things like leveraging the type system and none to things like being the-most-OO-code-ev4r
    
    I'm still a python-head, but VCSes have, like, the single highest robustness requirements of _any_ software you are likely to run into.  Less than, say, medical devices, but more than, say, for example... filesystems.
    
    So it helps me a lot to sleep at night, to know that the compiler will flat-out reject code that tries to gunzip the same data twice, or check out to the path "../../../../../../../home/njs/.ssh/authorized_keys"

    Also uses a moin wiki ;-): http://venge.net/monotone/wiki/

    darcs

    Not an option, we don't want to depend on Haskell stuff if we can have Python stuff. I also guess that being implemented in Haskell lowers amount of contribution and maybe also longterm speed of development.

    subversion, cvs*

    Not an option, we just got rid of that CVS-like stuff 2y ago.

    comments

    Developer query

    Maybe state your current preference about how we continue:

    MoinMoin: NewVCS (last edited 2007-10-29 19:07:30 by localhost)