iX 7/2017
S. 56
Review
Versionsverwaltung
Aufmacherbild

Modernes Quellcodemanagement mit GitHub, GitLab und Gogs

Mehr als ein Behältnis

Die von Linus Torvalds entwickelte Versionsverwaltung Git hat sich als Standard zur verteilten Softwareentwicklung etabliert. Anbieter wie GitHub und GitLab stellen auf dieser Grundlage komplette Umgebungen für Softwareprojekte bereit, die weit über die bloße Verwaltung des Quellcodes hinausgehen. Gogs liefert ähnliche Funktionen zur Installation auf eigener Hardware.

Quellcode-Repositories helfen, den Überblick über die Entwicklung von Softwareprojekten zu behalten. Man kann damit die Historie der Änderungen verfolgen, individuelle Versionen erstellen, Fehler in solchen Versionen korrigieren, ohne die Hauptentwicklung zu beeinflussen, und die Korrekturen dann in andere Versionen übernehmen.

Was den Linux-Erfinder Linus Torvalds jedoch störte: Versionsverwaltungen wie CVS, Subversion und Mercurial benötigen zentrale Repositories, auf die Entwickler direkt oder übers Netz zugreifen. Für die Kernel-Entwicklung schwebten ihm verteilte Offline-Repositories vor. Diese können zum Beispiel Forks, also individuelle Kopien eines Projekt-Repositories sein, dessen Branches mit neuen Features später wieder in das Repository einfließen. So können viele Menschen gleichzeitig an Projekten mitwirken und sie vorantreiben. Heraus kam Git.

Die Mächtigkeit dieses Ansatzes hat sich auch schnell anderen Projekten erschlossen und so verwundert der schnelle Siegeszug von Git nicht. Mehr und mehr Projekte richteten Git-Repositories für ihren Code ein; gleichzeitig entstanden Werkzeuge, die auf den verschiedenen Plattformen eine komfortablere Git-Nutzung als auf der Kommandozeile ermöglichen. Heutzutage ist Git die führende Versionsverwaltung.

Doch die Herausforderungen in der Software-Entwicklung sind größer und gehen über ein bloßes Quelltext-Repository hinaus. So muss geregelt sein, wer in welcher Form an einem Projekt mitwirken kann. Aufgaben müssen verteilt werden. Neue Features, Refactorings, Redesigns, Bugfixes, Dokumentation und vieles mehr gilt es zu verwalten, Softwareversionen und Teammitgliedern zuzuweisen und Fortschritte zu dokumentieren.

Viel zu tun

Bevor neuer Code integriert wird, ist ein Review erforderlich, woraus sich wiederum Nachbesserungen ergeben können. Auch die verschiedenen Branches des Codes und die Tags zur Kennzeichnung verschiedener Versionen wollen verwaltet werden. Das ist zwar alles via Kommandozeile möglich, doch eine gute Benutzeroberfläche hilft bei der Bedienung. Dazu kommt die interne Dokumentation des Projekts für die beteiligten Entwickler: Einführungen, Roadmaps, Status, APIs und mehr.

Für viele dieser Aufgaben gibt es eigenständige Software: Review-Anwendungen für die Qualitätssicherung des Codes, Projektmanagement- oder Ticketing-Systeme für die Verwaltung der Aufgaben, Content-Management-Systeme und Wikis für die Dokumentation. Um diese Systeme miteinander zu verbinden, müssen sie entsprechende Konnektoren mitbringen – wenn nicht, muss man selbst Hand anlegen. Das ist nicht nur viel Aufwand, sondern kann bei einem Update einzelner Anwendungen schnell brüchig werden und erneute Anpassungen erfordern. Und so verwundert es nicht, dass sich Entwicklerteams ein integriertes System mit einheitlicher Bedienung wünschen.

Das dachte sich auch GitHub Inc. und startete 2008 einen Dienst, dessen Kern Git-Repositories sind. Seitdem wurde die GitHub-Plattform stetig weiterentwickelt und der Funktionsumfang über eine Weboberfläche zur Repository-Verwaltung hinaus erweitert. Zahlreiche Open-Source-Projekte haben ihre Heimat auf GitHub gefunden, aber auch geschlossene Projekte können hier gehostet werden – gegen Bezahlung. Auch GitLab bietet eine gehostete Umgebung, die für Open-Source- und private Projekte kostenlos ist. Zudem lässt sich die Software, deren abgespeckte Community-Version unter Open-Source-Lizenz steht, auch selbst hosten – je nach gewünschtem Funktionsumfang gegen eine Lizenzgebühr. Die Open-Source-Lösung Gogs läuft ebenfalls auf eigener Hardware, allerdings ohne Lizenzkosten.

GitHub

Pionier GitHub ist der Platzhirsch unter den Repository-Portalen, was sich auch in Reife und Funktionsreichtum widerspiegelt. Nutzer erhalten nach der Anmeldung einen eigenen Bereich für ihre Projekte, in deren Zentrum jeweils ein Quellcode-Repository steht. Die Projekte sind unter einer individuellen URL der Form https://github.com/<Nutzer>/<Projekt> erreichbar. Es lassen sich Organisationen abbilden, zum Beispiel für eine Open-Source-Community. Hier kann man weiteren Nutzern Zugriff und unterschiedliche Rechte auf den Code einräumen. So finden vom kleinen Privatprojekt bis zu großen Unternehmenslösungen alle ihre Heimat bei GitHub.

Wie bei allen Git-Plattformen steht auch bei GitHub das Code-Repository im Zentrum (Abb. 1).

Neue Projekte können leicht mit einem Titel und einer Beschreibung angelegt werden. Öffentliche Projekte sind kostenlos, private erfordern eine kostenpflichtige Mitgliedschaft. Anschließend erhält der Nutzer einen Hinweis, wie er sein neues Quellcode-Repository per HTTPS oder SSH klonen, also eine lokale Kopie davon anlegen kann. Alternativ lässt sich das neu angelegte Repository auch einem lokalen als Master zuordnen, um so den lokalen Quellcode zu importieren. In den Einstellungen kann man eine Issue-Verwaltung, ein Wiki oder Webseiten zum Projekt aktivieren, Details zum Merging von Pull Requests festlegen, ein Projekt löschen oder an einen anderen Nutzer übertragen. Weitere Menüpunkte befassen sich mit der Verwaltung von Mitstreitern, der Konfiguration und dem Schutz von Branches, Webhooks oder Integrationen.