Open Source im professionellen Einsatz
Linux-Magazin 03/2014
© Adrian Hughes, 123RF.com

© Adrian Hughes, 123RF.com

Fünf Git-GUIs im Test

Leichter bedienbar

Die Versionsverwaltung Git ist komplex und das zugehörige Kommandozeilentool hat so viele Optionen und Aufrufparameter, dass selbst ausgebuffte Shell-Fans häufig die Manpages bemühen, um etwas nachzuschlagen. Fünf Git-Frontends sichern ihre Hilfe zu.

1253

Zahlreiche Distributionen, die Kernelentwickler und viele andere Open-Source-Projekte setzen auf das Versionsverwaltungssystem Git [1]. Linus Torvalds gründete das Projekt im Frühjahr 2005, und inzwischen läuft Git auf fast allen modernen Unix-Systemen, darunter Linux, Solaris, OS  X und andere BSD-Varianten. Auch für Windows-Systeme gibt es entsprechende Arbeitsumgebungen und Erweiterungen.

Die meisten Linux-Anwender bedienen die Code-Lagerhalle mit dem Kommandozeilentool »git« . Das ist aber so umfangreich und bietet so viele Parameter und Optionen, dass eine gründliche Lektüre der Manpages und ständiges Nachschlagen kaum vermeidbar sind. Die Shellvariante glänzt zudem nicht mit Übersichtlichkeit – wer schon mal mehrere Versionszweige (Branches) entflechten und sich durch ältere Commit-Kommentare wühlen musste, kennt das Problem.

Fünf Grafische Frontends versprechen Abhilfe. In dieser Bitparade treten Git Cola [2], Git Eye [3], Gitg [4], Qgit [5] und Smart Git [6] unter Ubuntu 13.10 in der 64-Bit-Version an. Eine Zusammenfassung der Daten bietet Tabelle 1.

Tabelle 1

Freie und proprietäre Git-Frontends im Vergleich

Name

Git Cola

Git Eye

Gitg

Qgit

Smart Git

Lizenz

GPLv2

proprietär

GPLv2

GPLv2

proprietär

Preis

kostenlos

kostenlos (Registrierung erforderlich)

kostenlos

kostenlos

kostenlos für die Privatnutzung

Version

1.9.3

1.5.0

0.2.7

2.5

5.0.5

Allgemein

»~/.gitconfig« (global)

ja

ja

ja

ja

ja

».git/config« (im Repository)

ja

ja

ja

ja

ja

».gitignore« (im Repository)

nein

ja (eingeschränkt)

nein

ja

ja

Externer Editor/Auswertung von $EDITOR

ja/ja

ja/ja

nein/nein

nein/nein

ja/nein

Staging/Unstaging

ja/ja

ja/ja

ja/nein

nein/nein

ja/ja

Patch erstellen

ja

ja

ja

ja

nein

Signieren (Gnu PG)

nein

nein

nein

nein

nein

Regexp in Suche

ja

nein

nein

ja (eingeschränkt)

nein

Eigene Befehle/Makros

nein/nein

Shellkommandos/nein

nein/nein

ja/nein

ja/nein

Arbeiten mit Repositories

Lokales Repository erstellen (»git init« )

ja

ja

nein

nein

ja

Dateien hinzufügen (»git add« )

nein

ja

ja

ja

ja

Unterschiede hervorheben (»git diff« )

ja

ja

ja

ja

ja

Tracked/untracked Dateien

ja/ja

ja/ja

ja/ja

nein/nein

ja/ja

Commit verändern (»git commit --amend« )

nein

nein

nein

ja

ja

Unbestätigte lokale Veränderungen zurücksetzen (»git checkout -f« )

ja

ja

nein

nein

ja

Versionierte Dateien auflisten (»git ls-files« )

ja

ja

ja

ja

ja (über Filter)

Datei(en) aus Repository entfernen (»git rm« )

nein

ja

nein

nein

ja

Ausstehende Änderungen anzeigen (»git status« )

ja

ja

ja (eingeschränkt)

nein

ja (über Filter)

Git-Dienste im GUI integriert

nein

Github, Gerrit, Team Forge, Cloud Forge

nein

nein

Github, Assembla, Beanstalk, Bitbucket, Codebase, Unfuddle

Quellen auf Server laden (»git push« )

ja

ja

nein

nein

ja

Lokale Version aktualisieren (»git pull« )

ja

ja

nein

nein

ja

Objekte und Metadaten aus entfernten Repositories holen (»git fetch« )

ja

ja

nein

nein

ja

Erstellen/suchen von/nach Tags

ja/nein

ja/ja

ja/nein

ja/nein

ja/nein

Logfiles und Commit-Verlauf (»git log« , »git show« )

ja

ja

ja (eingeschränkt)

ja

ja

Zwischenschritte als Stashes speichern (»git stash save« )

ja

ja

nein

nein

ja

Arbeiten mit Branches

Alle Branches anzeigen (»git branch -a« )

ja

ja

ja

ja

ja

Lokalen Branch anlegen (»git branch« )

ja

ja

ja

ja

ja

Branch wechseln (»git checkout« )

ja

ja

nein

nein

ja

Branch löschen (»git branch -d« )

ja

ja

nein

nein

ja

Branches mergen (»git merge« )

ja

ja

nein

nein

ja

Commits aufteilen und umordnen (»git-rebase« )

ja

ja

nein

nein

ja

Konfliktbewältigung

nein

ja

nein

nein

ja

Git Cola

Den Auftakt macht das Python-Programm Git Cola [2]. Das unter der GPLv2 veröffentlichte Git-Frontend ist in den Paketquellen der meisten Distributionen enthalten. Zudem bietet die Projektseite Versionen für OS  X und Windows sowie einen Link zu den Quellen an. Die Tester installierten Version 1.9.3. Git Cola setzt auf Qt 4 für seine Oberfläche.

Nach dem Start präsentiert das Programm ein winziges Fenster, über das Anwender ein lokales Repository öffnen oder ein Git-Projekt klonen. Letzteres öffnet einen Dialog, in den sie die URL eintippen und dann den lokalen Ort wählen. Während des Klonens wirkt das Programm, als wäre es abgestürzt. Ein Fortschrittsbalken oder eine Meldung, dass Git Cola im Hintergrund Daten lädt, fehlt.

Git Cola spricht eine wilde Mischung aus Deutsch und Englisch und bietet für einige Menü-Einträge nicht die etablierten Git-Begriffe an, sondern glänzt mit Kreativität. So heißt »Push« etwa »Versenden« , und »Pull« haben die Macher mit »Veröffentlichen« übersetzt. Git Cola liest die Konfigurationsdateien des Anwenders aus. Im Einstellungsdialog tragen sie Benutzernamen und Mailadresse für das aktuelle Repository sowie für alle Repositories (global) ein. Vorsicht: Das Tool überschrieb im Test ohne Nachfrage vorhandene Dateien ».git/config« und »~/.gitconfig« .

Git Cola wertet die Umgebungsvariablen »$VISUAL« und »$EDITOR« aus, wenn der Nutzer die Felder für den bevorzugten Texteditor in den Einstellungen freilässt. Das klappte allerdings nicht auf allen Testsystemen zuverlässig. Die gewählten Tools für Diff und Merge sowie den Editor trägt das Programm ebenfalls in »~/.gitconfig« ein.

Einige Unterabschnitte des Hauptfensters blendet der Nutzer über das Menü »Tools« ein. Andere Funktionen öffnen neue Unterfenster. Neue, geänderte und im Staging-Bereich (Index) angesiedelte Dateien erscheinen unter »Zustand« (siehe Abbildung 1). Mit einem Doppelklick schiebt der Nutzer einen Eintrag in den Staging-Bereich, wo er auf das Verschicken (Commit) wartet. Ein weiterer Doppelklick entfernt das File wieder aus der Ladezone. Git Cola kann weder neue Dateien erstellen noch vorhandene aus dem Repository löschen, umbenennen oder verschieben. Über das Kontextmenü dürfen Benutzer immerhin Änderungen an einer Datei verwerfen.

Abbildung 1: Das Hauptfenster von Git Cola ist in mehrere Bereiche unterteilt, von denen jeder eine andere Aufgabe übernimmt. Über Schaltflächen erreichen Anwender die wichtigsten git-Kommandos.

Koffeinsüchtig?

»Übersicht« zeigt alle im Projekt vorhandenen Dateien an und ermöglicht den Vergleich mit anderen Versionen. Die eigentliche Gegenüberstellung übernimmt »git« selbst. Wer die Versionshistorie abruft, der öffnet das im Einstellungsdialog unter »History Browser« eingetragene Tool. In der Voreinstellung ist das Gitk, das zu Git selbst gehört. Fehlermeldungen und andere Ausgaben landen im Hauptfenster von Git Cola.

Das Python-Programm packt auf Wunsch Tar.gz-Archive des Quellcods und exportiert Patches. Die Suche versteht reguläre Ausdrücke. Geänderte Dateien können Benutzer stashen, also vorübergehend sichern. Tags zum Kennzeichnen bestimmter Codeversionen tackert das Frontend nur an den Anfang oder das Ende eines anderen Zweigs.

Git Cola bereitet die Branches optisch auf (siehe Abbildung 2). Im Gegensatz zur Konkurrenz zeigt das Tool dabei nicht die Commit-Texte direkt im Diagramm an, sondern lagert sie in eine separate Liste aus. Möchte der Anwender wissen, welcher Punkt im Diagramm welchem Commit entspricht, muss er ihn explizit auswählen. Bei größeren Projekten fällt die Zuordnung schwer.

Abbildung 2: Git Cola zeigt die Branches zwar als Diagramm an, die Zuordnung zu einzelnen Commits fällt aber schwer.

Die Anwendung implementiert die Funktionen Push, Pull, Fetch, das Mergen und ein Rebase. Die jeweiligen Dialoge sind allerdings recht karg und umständlich zu bedienen. Ein Merge benötigt beispielsweise mehrere Mausklicks, um die korrekten Zweige auszusuchen. Wer zu einem anderen Branch wechseln möchte, der muss den genauen Namen kennen und in ein Feld tippen – das die Eingabe immerhin automatisch vervollständigt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Tooltipps

    CPU Compare 0.6, MDP 0.7.0, Hstr 1.2, IPset List 3.1, Open Traffic Shaper 0.1.x-20140214, Rabbit VCS 0.15.3

  • Gitx-Klon Gitg wird 0.0.4

    Das junge Gitg-Projekt, das mit optischen Anleihen an Mac OS X ein Git-Repository unter Gnome visualisiert, erlaubt in der neuen Version 0.0.4 unter anderem Einchecken oder Mergen via GUI.

  • Versionsverwaltung

    Einst gab es in der freien Softwarewelt nur CVS. Inzwischen existieren mit Subversion, Git, Mercurial und Bazaar mehrere professionelle, ausgereifte Systeme für die Versionsverwaltung. Besonders die verteilten Versionskontrollsysteme liefern sich bei den Features ein Kopf-an-Kopf-Rennen.

  • Git als Helfer beim Pakete-Bau

    2005 bereicherte Kernel-Schöpfer Linus Torvalds die Landschaft der freien Versionskontrollsysteme um ein weiteres Projekt. Die Entwicklung von und mit Git, dessen Name ein britischer Slangausdruck für eine einfältige Person ist, steht seither nicht still. Git ist nicht nur für Programmierer, der klassischen Benutzerbasis interessant - auch die Paketierer von Linux-Distributionen wie Debian profitieren von dem Werkzeug.

  • Eric geht Essen

    Aktuelle Versionskontrollsysteme folgen dem Trend zum verteilten System. SVK gehorcht dem dezentralen Ansatz und bedient sich dabei existierender Systeme wie Subversion. Dieser Artikel beschreibt die Konzepte und zeigt, wie SVK sie auf elegante Weise umsetzt.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.