Für gelegentliche Programmieraufgaben möchte ich ein source code control system verwenden. Damit verhindere ich, daß ich einmal funktionierende Software in einen nicht mehr funktionierenden und nicht mehr rekonstruierbaren Zustand gerät. Außerdem kann ich damit funktionierende Softwarestände weitergeben und bei Rückmeldungen rekonstruieren. SCCS, RSC und CVS, die ich noch “von früher” kenne sind nicht mehr zeigtemäß und haben außerdem einige Nachteile.

Für mich ein Anti-Feature einer neuen Source Control Software ist die Notwendigkeit eines Servers. Viele Features benötige ich nicht, das System soll einfach sein. Die Team-Features sind mir für meine “ein Mann Show” ebenfalls unwichtig. Geschwindigkeit ist Nebensache.

Vielmehr soll “mein” System einfach zu benutzen sein, gut mit der lokalen Festplatte funktionieren ohne einen zentralen Server verwenden zu müssen (aber können). Hilfreich wäre, wenn das System auch noch funktioniert, wenn derselbe (lokale) Verzeichnisbaum über verschiedene Rechner repliziert ist (z.B. via Live Mesh oder Windows Live FolderShare). Verwendbarkeit unter Windows ist wichtig, Linux, möglichst auch FreeBSD, sollte gegeben sein, eine grafische Benutzungsschnittstelle wäre angenehm, Einbindung in Microsoft Visual Studio auch, das Fehlen ist aber kein KO-Kriterium. Mir wäre auch lieb, nur ein Revision-Verzeichnis per Projekt zu haben, nicht in jedem Verzeichnis ein Unterverzeichnis (wie z.B. bei CVS). Kostenlosigkeit ist selbstverständlich.

In die Überlegung kamen:

Microsoft Team Foundation Server/Visual Studio Team System: Das Produkt hat natürlich eine Spitzen-Einbindung in die Microsoft-Produkte, kostet aber signifikante Geldbeträge und ist überladen, kommt also nicht in Frage.

Subversion: Dies ist “Industrie-Standard”, braucht aber einen Server. Gut ist die Menge an freien Hosting-Angeboten und die Windows-Shell Einbindung.

git: ist ein heißer Kandidat, krankt aber an Kompliziertheit; vor allem ist Windows als Platform nicht gut unterstützt.

Mercurial: ist ähnlich git, aber mehr auf Performance für große Projekte getrimmt. Windows wird besser unterstützt. git ist in python implementiert, was an sich angenehm ist, aber im Windows-Umfeld eher nachteilig gesehen werden kann.

Monotone: ähnlich wie Mercurial, aber nicht so ausgereift. Soll ein Server zum Einsatz kommen, ist das System peer-2-peer orientiert und verwendet nur das eigene netsync Protokoll. Aufsetzen eines Projekts ist kompliziert und umfangreich.

Bazaar: ist einfacher als alle vorgenannten, und läuft auf Linux und Windows, welches alle obigen Kriterien erfüllt. Angepriesen wird es als “Version control for human beings”, welches “just works”. Es ist ebenfalls in python implementiert.

Eine kurze Zusammenstellung findet sich auch hier.

Kürzlich habe ich auch noch darcs entdeckt, aber allein die Programmiersprache (Haskel) und die unbefriedigende Windows-Unterstützung (implementiert via cygwin) sind nicht applikabel, die Fortführung des Projekts aus dem Wissenschaftsbereich ungesichert.

Ich habe mich für Bazaar entschieden und bin damit soweit zufrieden. Es ist einfach und unkompliziert zu bedienen. Es gibt sogar eine (experimentelle) Windows Explorer Kontextmenüeinbindung. Ein Manko sind Unix-basierte Projekte, die symbolische Links verwenden: das ist zwar durch Bazaar unterstützt, aber unter Windows nicht implementiert, so daß einige Plugins unter Windows mangels Installierbarkeit nicht funktionieren.

Ein bißchen Werbung, insbesondere konzentriert auf Benutzbarkeit, warum man Bazaar statt der anderen genannten Tools verwenden sollte, findet sich hier.

  • Share/Save/Bookmark