Kundenprojekte
Seit 2010 bietet aragost Trifork Mercurial Beratung und Support an. Die interessantesten Kundenprojekte stellen wir Ihnen auf diese Seite vor.
Migration von CVS zu Mercurial
Ende 2010 entschied sich die Universität Zürich ihre Online Learning And Training platform (OLAT) von CVS auf Mercurial zu migrieren. Die Aufrüstung des SCM Systems war eine Voraussetzung um überhaupt die Möglichkeit für ein grösseres Refactoring zu schaffen. Es wurde vor allem ein SCM benötigt, das die Umbenennung (renaming) von Dateien und Verzeichnissen, samt zusammenführen (merging) von Branches gut unterstützt. Mercurial wurde aber auch gewählt, weil es sehr einfach zu gebrauchen ist.
aragost Trifork wurde in beratender Funktion früh ins Projekt miteinbezogen um bzgl. Repository Aufbau ratschläge zu geben: Wie bewegen sich Änderungssätze durch Feature-Branches? Soll man named branches oder stattdessen mehrere Repositories verwenden? Wie supportiert und wartet man ältere Releases? Wie garantiert man ein bestimmtes Mass an Qualität von zukünftigen Releases?
Gemeinsam mit der Universität haben wir einen Arbeitsfluss definiert, der es anhand mehrerer Repositories ermöglicht Kode in Etappen zu testen bevor dieser einem grösseren Publikum zur Verfügung gestellt wird.
Die 15 Entwickler wurden über zwei Tage in der Anwendung von Mercurial geschult, damit sie schnellst möglich mit dem neuen System vertraut wurden und so die Produktivitätserhöhung, die Mercurial verspricht, einfordern konnten. Der zukünftige Mercurial Administrator bekam zusätzliches Training bei dem vor allem serverseitige Aufgaben im Vordergrund standen.
Nach der Migration von CVS auf Mercurial began das Team ihr Refactoring mit grossem Elan. Die ersten Branches wurde bereits kurze Zeit später erfolgreich zusammengeführt.
Massgeschneiderte Erweiterungen
Einem Grosskunden in Deutschland haben wir beim Wechsel von ClearCase zu Mercurial tatkräftig unter die Arme gegriffen und dabei hunderte von Entwicklern innerhalb von ein paar Monaten von einem System aufs andere migriert.
Der Kunde arbeitet mit aussergewöhnlich grossen Repositories, was sich als eine Herausforderung herausstellte. Ausserdem besteht die Software des Kunde aus mehr oder weniger unabhängigen Modulen, was den Wunsch nach sub-repositories, eines pro Modul, weckte. Allerdings war Mercurials sub-repository support zu Begin des Migrationsprozesses noch rudimentär. aragost Trifork bekam den Auftrag die sub-repositories Funktionalität zu erweitern und vervollständigen. Da es sich hierbei nicht lediglich um eine Erweiterung, sondern um Kernfunktionalität handelt, durften wir eng mit der Mercurial community zusammenarbeiten. Dies war sehr wichtig für den Kunden, der nicht riskieren wollte eine eigene Mercurial Erweiterung selber warten zu müssen.
Ausserdem wünschte der Kunde die Möglichkeit gewisse Dateien für Änderungen sperren zu können. Mercurial ist 100% verteilt und bietet dieses Feature deshalb nicht an, weil es für die Realisierung einen zentralen Ort braucht wo der Zustand (gesperrt oder nicht) der Dateien festgehalten wird. Für binäre Dateien bzw. solche die nicht ohne weiteres gemerged werden können (Word, Excel, Bilder, etc.) macht es aber durchaus Sinn eine Sperre zu definieren, um so zu verhindern, dass mehrere Personen parallel daran arbeiten.
Zu diesem Zweck haben wir die neue lock extension implementiert.
Zweiweg Mercurial–Subversion Bridge
Die Versionsverwaltung ist das Nervensystem der Softwareentwicklungsabteilung. Es ist ein äusserst zentraler Teil der Infrastruktur. Daher möchten Firmen verständlicherweise Änderungen in diesem Bereich oft gerne vorsichtig und in kleinen Schritten vollziehen.
aragost Trifork wurde von einer kanadischen Firma mit diesem Problem konfrontiert: 150 Entwickler waren fleissig mit der Fehlerbehebung und Entwicklung von neuen Features für ihr Softwaresystem beschäftigt. Wie sollte man die Migration von Subversion zu Mecurial durchführen ohne die Entwickler unnötig zu stören?
Das Bedürfnis zu Mercurial zu migrieren stammte, wie so oft, vom Wunsch Branches besser mergen zu können als dies mit Subversion möglich ist. Dieser Kunde hat zu jederzeit mehrere Versionen (jede entspricht einem Branch) seines Produktes auf dem Markt die alle parallel unterhalten werden müssen. Wenn ein Fehler in einer Version ausgebessert worden ist muss der fehlerbehebende Kode auch in die anderen Versionen gemerged werden. Das ist mit Subversion relativ kompliziert gewesen. Mit Mercurial hingegen sehr einfach.
Für die Migration hat aragost Trifork eine automatische zweiweg Mercurial – Subversion Bridge entwickelt. Diese sorgt dafür, dass beiden Welten synchron gehalten werden.