Tower 2.0 ist da – Um Git einfach zu machen!

Avatar of Tobias Günther
Tobias Günther am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die meisten Leute würden die Versionskontrolle nicht als ihr Hobby bezeichnen. Aber in den letzten Jahren sind die Leute sich auch bewusst geworden, wie wertvoll sie ist. Heutzutage findet man keinen Top-Programmierer, Webentwickler oder Webdesigner mehr, der keine Versionskontrolle nutzt. Zum Teil, weil sie hilft, bessere Ergebnisse zu erzielen und die Zusammenarbeit erleichtert. Aber auch, weil sie einem das Leben retten kann, wenn etwas schiefgeht.

Als wir 2010 anfingen, Tower zu entwickeln, hatten wir ein klares Ziel vor Augen: Git, die beste verfügbare Versionskontrolle, einfacher zu bedienen zu machen. Seitdem haben wir dies für über 35.000 Kunden in Unternehmen wie Apple, Google, Amazon und Ebay wahr gemacht.

Als wir mit der Arbeit an Version 2 von Tower begannen, wussten wir, dass dies eine Chance war, noch einen Schritt weiter zu gehen: Git nicht nur einfacher, sondern tatsächlich einfach zu bedienen zu machen.

Wie man Konflikte mit Zuversicht löst

Merge-Konflikte haben mir schon immer Angst gemacht. Besonders, da ich eine „nicht so technische“ Person bin. Ich habe nie wirklich verstanden, was passiert war – und, was noch wichtiger ist, wie ich es beheben konnte.

Eines meiner Hauptprobleme mit Konflikten ist, dass die Situation so abstrakt und schwer zu erfassen ist. Deshalb haben wir in Tower 2 eine visuelle Methode zur Lösung von Konflikten eingeführt.

Dadurch kann ich die Situation nun leichter verstehen – indem ich klar sehe, welche Dateien kollidierten, wie genau sie aussahen, wer daran gearbeitet hat und welcher Commit die Änderungen eingeführt hat. Und ich kann dann entscheiden, wie die Lösung aussehen soll – indem ich einfach auf die Dateien klicke, die ich in der endgültigen Auflösung haben möchte.

Ein Repository in Null Komma Nichts klonen

Ich klone kein Repository gerne. Denn obwohl es eigentlich ein einfacher Prozess ist, ist es auch mühsam: Zuerst muss ich mich bei meinem Service-Konto auf GitHub, Bitbucket oder Beanstalk anmelden. Dort beginnen die Probleme: Als ob das Herumfummeln mit Benutzernamen und Passwörtern nicht genug wäre, erfordern neue Authentifizierungsverfahren nun die Erstellung von Passcodes auf dem Handy, die Generierung von persönlichen Zugriffstokens oder das Durchlaufen verschiedener anderer Hürden. Danach muss ich mein Repository finden und die richtige URL kopieren – wobei ich zwischen verschiedenen Optionen wie ssh, https oder git-URLs wählen muss.

Ein neuer Service-Account-Manager in Tower 2 ermöglicht es mir, meine Konten bei GitHub, Bitbucket und Beanstalk einmal zu konfigurieren – und mich dann nie wieder um Authentifizierung und Repository-URLs kümmern zu müssen.

Ich erhalte nun eine übersichtliche Liste aller meiner Repositories in diesen Konten. Ich kann ein Repository mit nur einem Klick auf meinen lokalen Rechner klonen. Oder ein neues Konto direkt aus Tower heraus erstellen.

Vor allem aber: Ich muss mich nicht mehr mit Benutzernamen, Passwörtern, Tokens oder URLs herumschlagen.

Verstehen, was in Ihrem Projekt passiert ist

Jedes Projekt entwickelt sich in kleinen Schritten. Wenn ich mit dem Projekt Schritt halten möchte, sind es diese kleinen Schritte, die ich verstehen muss. Daher ist es für mich von entscheidender Bedeutung, dass ich alle benötigten Informationen auf verdauliche Weise erhalte. In der neuen Version von Tower haben wir viel Aufwand in alle Dinge rund um die Historie gesteckt

Sie können die Commits sehen, die Sie beim Pull von einem Remote-Server erhalten würden – so können Sie klar verstehen, was passieren wird, wenn Sie es schließlich doch tun.

Sie können zwischen mehreren verschiedenen Ansichten wählen – so haben Sie die Visualisierung, die für Sie am besten geeignet ist.

Sie können direkt auf den Datei-Tree eines Commits zugreifen – so können Sie alle Dateien Ihres Projekts zu jedem beliebigen Zeitpunkt inspizieren.

Und schließlich unterstützt die Suchfunktion jetzt Dateipfade – so können Sie leicht nur die Commits sehen, die eine bestimmte Datei geändert haben.

Fehler rückgängig machen

Meine Einstellung zu Fehlern hat sich geändert – obwohl ich genauso viele mache wie früher. Geändert hat sich, dass ich sie nicht mehr so sehr fürchte. Früher war ich zögerlich, größere Änderungen an einem Projekt vorzunehmen oder etwas Neues auszuprobieren. Weil ich wusste, dass es schwer war, sich von einem Fehler zu erholen, wenn einer passieren sollte.

Nachdem ich eine Weile Git benutzt hatte, begann ich zu verstehen, dass ich alles rückgängig machen konnte. Gits Undo-Funktionen ermöglichen es Ihnen, sich von allem zu erholen – aber die entsprechenden Befehle sind über das gesamte System verteilt.

In Tower haben wir diese Dinge sehr einfach zugänglich gemacht: Ich kann meinen letzten Commit korrigieren, jede historische Version wiederherstellen, die Auswirkungen eines bestimmten Commits rückgängig machen oder lokale Änderungen in meiner Arbeitskopie verwerfen. Es ist großartig zu wissen, dass ich nichts falsch machen kann.

Aussagekräftige Commits erstellen

Als ich anfing, Versionskontrolle mit Subversion zu nutzen, missbrauchte ich sie im Wesentlichen als Backup-System: Ich quetschte alle meine Änderungen in einen Commit, nur um sicherzustellen, dass sie sicher im Repository gespeichert waren. Dementsprechend lasen sich meine Commit-Nachrichten so:

Bug #312 behoben, Login-Funktion implementiert, Navigation umstrukturiert. Oh, und nebenbei wurde auch alles andere geändert…

Als ein Teammitglied (oder sogar ich selbst) diesen aufgeblähten Commit betrachtete, wusste keiner von uns, was tatsächlich passiert war.

Ich hatte damals die Versionskontrolle nicht verstanden. Und ehrlich gesagt, hatte ich nicht die richtigen Werkzeuge zur Hand. Mit Git verstand ich, dass die Durchsicht der Commit-Historie eines Projekts es ermöglichen sollte, zu sehen, wie sich das Projekt entwickelt hat. Aber das funktioniert nur unter einer Bedingung: Nur zusammenhängende Änderungen sollten zusammen committet werden.

Zum Beispiel sollten die Behebung zweier verschiedener Bugs zu zwei separaten Commits führen. Kleine Commits erleichtern es anderen Entwicklern, die Änderungen zu verstehen und sie rückgängig zu machen, wenn etwas schiefgelaufen ist.

Git hilft bei der Erstellung solcher granularen Commits mit Werkzeugen wie dem „Staging Area“: Es zwingt mich, einen Commit wirklich zu gestalten und zu bestimmen, welche Änderungen ich genau aufnehmen möchte. Ich kann sogar auf der Ebene einer einzelnen geänderten Zeile entscheiden, ob diese Änderung Teil des nächsten Commits sein soll oder nicht.

Besonders letzteres ist jedoch auf der Kommandozeile eher umständlich zu bedienen. Dort passt Tower gut, da es solche leistungsstarken Funktionen mit einer sauberen Benutzeroberfläche leicht zugänglich macht.

Workflows optimieren

Die Verwendung von Git kann komplex sein. Aber der Zugewinn an Qualität, Vertrauen und Zuverlässigkeit, den Sie durch die Nutzung erzielen, ist die Mühe auf jeden Fall wert. Diesen Aufwand zu reduzieren, ist genau das, was wir mit Tower 2 erreichen wollten. Wir möchten die Nutzung von Git schneller und einfacher machen. Nehmen wir einige Beispiele, wo sich dies in Tower zeigt

  • Sie müssen neue Änderungen für ein Projekt nicht mehr manuell herunterladen. Stattdessen führt Tower nun automatisch und regelmäßig eine „Fetch“-Operation im Hintergrund durch. So wissen Sie sofort, ob etwas Neues auf dem Remote-Server verfügbar ist.
  • Die App speichert automatisch Ihre aktuellen Änderungen im Stash (einer Art Zwischenablage), wenn Sie zwischen Branches wechseln, pullen oder rebasen. Aktionen wie diese werden am besten mit einer sauberen Arbeitskopie durchgeführt – und Tower erspart Ihnen die Mühe, sich daran zu erinnern und es selbst zu tun.
  • Ein neues „Schnell öffnen“-Dialogfeld ermöglicht es Ihnen, jedes Projekt in Sekundenschnelle zu finden und zu öffnen. Nachdem Sie nur wenige Zeichen des Projektnamens eingegeben haben, bietet Ihnen Tower alle passenden Repositories an.
  • Wir haben das Committen viel schneller gemacht. Die Benutzeroberfläche für die Commit-Nachricht ist nun sauber in die Hauptoberfläche integriert; das Korrigieren eines Commits kann durch einfaches Halten der ALT-Taste erfolgen.
  • Auf vielfachen Wunsch haben wir den „git-flow“-Workflow in Tower integriert. git-flow-Fans können ihn nun direkt aus Tower heraus nutzen.
  • Sie können Drag & Drop verwenden, um in Tower recht komplexe Git-Aufgaben sehr einfach zu erledigen: vom Erstellen und Mergen von Branches über das Cherry-Picking von Commits bis hin zum Anwenden sogar von Teilen eines Stash.

Wir haben eine ganze Reihe neuer Funktionen in Tower 2 implementiert. Aber vor allem haben wir uns auf die Benutzerfreundlichkeit konzentriert: Ein gutes Werkzeug, so glauben wir, sollte Ihnen helfen, leichter ein besserer Profi zu werden.