Wenn man mit mehreren Personen an einer RubyFrontier-Website arbeitet, reicht oft die Synchronisation via Dropbox nicht aus. Zu groß ist die Gefahr, daß zeitgleich an einem Dokument gearbeitet wird und der eine die Änderungen des anderen überschreibt. Hier empfiehlt sich der Einsatz eines Versionsverwaltungssystems. Für Werkzeuge wie RubyFrontier, mit denen man auch ohne Netzzugang arbeiten kann, empfehle ich ein verteiltes Versionsverwaltungssystem, denn verteilte Versionskontrollsysteme verwenden kein zentrales Repositorium mehr. Jeder, der an dem verwalteten Projekt arbeitet, hat sein eigenes Repositorium und kann dieses mit jedem beliebigen anderen Repositorium abgleichen. Die Versionsgeschichte ist dadurch genauso verteilt. Änderungen können lokal verfolgt werden, ohne eine Verbindung zu einem Server aufbauen zu müssen.
Optional kann man dann auch noch ein Web-Repositorium verwenden. Sehr populär für solche Anwendungen ist das freie Versionskontrollsystem Git. Ich möchte daher zeigen, wie man RubyFrontier mit Git und dem Web-Repositorium Github nutzt.
Github ist für Open Source Projekte kostenlos, wenn man private (d.h.nicht öffentlich einsehbare) Repositorien benötigt, muß man einen kostenpflichtigen Account einrichten.
Die Einrichtung von Git und Github erfolgt in folgenden Schritten:
Die Einrichtung eines SSH-Keys ist zwar nicht zwingend erforderlich, für eine sichere, verschlüsselte Verbindung zwischen einem lokalen Rechner und dem Github-Repositorium jedoch zu empfehlen. Sie muß einmalig für jeden teilnehmenden Rechner erfolgen.
Navigieren Sie bitte im Terminal mit folgendem Kommando zu ihrem SSH-Verzeichnis:
cd ~/.ssh
Dort überprüfen sie, ob bereits ein SSH-Schlüssel vorhanden ist, indem sie folgendes eintippen:
ls
Dies listet den gesamten Inhalt des aktuellen Verzeichnis auf. Wenn Sie dort Dateien mit dem Namen id_rsa
und id_rsa.pub
entdecken, dann ist die meiste Arbeit für Sie schon getan und sie können ihren Key – wie weiter unten beschrieben – Github bekanntgeben. Wenn nicht, müssen Sie einen neuen Key erst generieren.
Dazu tippen Sie folgenden Code in das Terminal ein:
ssh-keygen -t rsa *email-name@youremail.de*
Enter file in which to save th key (/Users/*ihr-user-directory*/.ssh/id_rsa):
Natürlich müssen Sie anstelle der in Sternchen eingeschlossenen Platzhalter Ihre Email und Ihr Nutzerverzeichnis eingeben.
Jetzt wird von Ihnen eine Passphrase verlangt. Je länger und komplizierter diese Passphrase ist, desto sicherer ist Ihr Schlüssel. Aber Achtung: Sie müssen Sie sich merken können, da Sie sie zweimal eingeben müssen (ich verwende dafür immer einen Zungenbrecher aus meiner Kindheit):
Enter passphrase (empty for no passphrase): *passphrase eingeben*
Enter same passphrase again: *noch einmal die passphrase eingeben*
Wenn alles gut gegangen ist, bekommen Sie eine Antwort, wie im obigen Screenshot zu sehen ist. Und Ihr SSH-Schlüssel ist generiert.
Falls Sie ihn nicht schon besitzen, müssen Sie sich nun einen Guthub-Account einrichten. Dafür navigieren Sie Ihren Browser auf die Homepage von Github und folgen dort den (einfachen) Anweisungen, um sich dort zu registrieren. Je nachdem, ob Ihnen öffentliche Repositorien, die jeder sehen kann, genügen, oder ob Sie private Repositorien mit eingeschränktem Benutzerkreis benötigen, müssen Sie entscheiden, ob Ihnen ein kostenloser Account reicht, oder ob Sie auf einen kostenpflichtigen Account ausweichen müssen.
Jedenfalls, wenn Sie sich einmal angemeldet haben, sehen Sie bei jedem Besuch Ihr Dashboard mit dem Github Bootscamp, das Ihnen alle Schritte erleichtert, um ein Github-Repositorium einzurichten.
Jetzt sind Sie auch bereit, Github Ihren RSA-Schlüssel mitzuteilen. Dazu klicken Sie rechts oben auf das Symbol mit Schraubenschlüssel und -zieher (-dreher), dann links auf den Navigationspunkt SSH Keys und dann rechts oben wieder auf den Add Key-Knopf.
Jetzt navigieren Sie wieder im Terminal mit cd ~/.ssh
zu Ihrem SSH-Verzeichnis und geben dort folgendes Kommando ein:
cat id_rsa.pub
Die Antwort ist eine lange, unverständliche Liste mit Zeichen, die mit ssh-rsa
beginnt und mit Ihrer Email-Adresse endet. Diese kopieren Sie vollständig in Ihre Zwischenablage und navigieren dann wieder zu Ihrem hoffentlich noch offenen Browserfenster, das die Eingabe eben dieses Codes erwartet. Vergessen Sie nicht, diesem Key einen aussagekräftigen Titel zu geben, der es Ihnen ermöglicht, den Account zu identifizieren (ob er zum Beispiel zu Ihrem Notebook gehört oder ob es Ihr Rechner am Arbeitsplatz ist). Dies ist wichtig, wenn Sie zum Beispiel Ihr Notebook verkaufen, dann sollten Sie diesen und nur diesen Key auf Ihrem Github-Konto auch löschen.
Git zu installieren ist sehr einfach. Besuchen Sie die Git Homepage und laden sich den Installer für MacOS X herunter. Es ist ein One Click Installer, der alle Installationsarbeiten für Sie erledigt. Danach geben Sie im Terminal einfach nur das Kommande git
ein und Sie sollten eine Liste aller verfügbaren Kommandos sehen:
Falls nicht, beenden Sie einfach das Terminal und öffnen es erneut.
Jetzt müssen Sie – einmalig für jeden Rechner – Git noch konfigurieren. Dazu navigieren Sie noch einmal mit cd ~/.ssh
in Ihr SSH-Verzeichnis und tippen dort folgende Befehle ein:
git config --global user.name "Vorname Nachnahme"
git config --global user.email "email-name@youremail.de"
git config --global color.ui true
git config --global color.status auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global color.diff auto
Wenn Sie danach
git config -l --global
eintippen, sollten Sie Ihre Konfiguration, die Sie soeben eingetippt hatten, sehen. Ich muß gestehen, daß ich diese Parameter und Ihre Bedeutung auch nicht wußte, sondern sie der einschlägigen Literatur entnommen habe. Besonders das Buch Drupal for Designers von Dani Nordin, das nicht RubyFrontier, sondern das Content Management System Drupal mit Git und Github »verheiratete«, hat mir dabei sehr geholfen.
Als nächstes richten Sie bitte ein (leeres) Repositorium ein, daß Sie dann später mit Ihren RubyFrontier-Dateien via Git füllen werden. Dazu kehren Sie zurück zu Ihrer Github Seite. Rechts unten finden Sie ein Schaltfläche, die mit New Repository beschriftet ist.
Falls Sie schon Repositorien angelegt hatten, finden Sie sie, wie obiger Screenshot zeigt, dort auch und können von da dorthin manövrieren.
Geben Sie Ihrem neuen Repositorium einen Namen und eine kurze Beschreibung. Und nun müssen Sie auch endgültig entscheiden, ob es ein offenes oder ein privates Repositorium ist, d.h. ob Sie einen kostenpflichtigen Account (auf den Sie – natürlich – jederzeit upgraden können) benötigen oder ob Ihnen der kostenlose Account reicht.
Jetzt müssen Sie letztmalig das Terminal bemühen. Rufen Sie es also auf und navigieren Sie in das Verzeichnis, das Ihre RubyFrontier-Quellen enthält (also nicht in das Verzeichnis, in das die fertigen HTML-Seiten herausgeschrieben werden):
cd ~/*mein/superduper/rubyfrontier/projekt*
Dort angekommen, erklären Sie dieses Verzeichnis und die Unterverzeichnisse mit diesen Kommandos zu einem Git-Repositorium und verbinden es gleichzeitig mit Github:
git init
git add -A
git commit -m 'first commit'
git remote add origin https://github.com/*username/repositoriumsname*.git
git push origin master
Damit haben Sie Ihr lokales Verzeichnis zu einem Master erklärt und das Github-Repositorium zum Origin. Gleichzeitig wurden alle Dateien Ihres lokalen Verzeichnisses erstmalig mit dem Origin synchronisiert.
Normalerweise verläuft eine Sitzung mit Git und Github nun wie folgt. Jedesmal bevor Sie mit Ihrem RubyFrontier-Projekt arbeiten, synchronisieren Sie es erst einmal, indem Sie
cd ~/*mein/superduper/rubyfrontier/projekt*
git pull
eingeben. Damit stellen Sie sicher, daß Ihr lokaler Master mit dem Origin synchronisiert, denn in der Zwischenzeit könnte ja einer Ihrer Mitstreiter Änderungen an den Projektdateien vorgenommen und diese auf dem Origin abgelegt haben. Wenn Sie wirklich sicher sind, daß nichts dergleichen geschehen ist, können Sie natürlich auf diesen Schritt verzichten, aber nur, wenn Sie wirklich sicher sind.
Wenn Sie dann mit Ihrer Arbeit fertig sind, laden Sie Ihre Änderungen auf Github hoch:
git add [*FILENAME, DIRECTORY oder -A*]
git commit -m "*kurze Beschreibung Ihrer Änderungen*"
Und mit
git pull
synchronisieren Sie dann letztmalig Ihre Dateien. Dies ist natürlich für die meisten Mausschubser wie mich zu viel Kommandozeilen-Tipperei und daher haben die Macher mit Github for Mac eine GUI zur Verfügung gestellt, die nicht nur dies alles im Hintergrund erledigt, sondern sogar auch schon Schritt 6, das Anlegen eines neuen, lokalen Repositoriums via graphischer Benutzeroberfläche und Mausklicks für Sie erledigt.
Github for Mac können Sie sich hier herunterladen, doch Achtung: Die aktuelle Version benötigt mindestens MacOS X 10.7 (Lion). Wer also – wie ich – mit dem Schneeleoparden unterwegs ist (MacOS X 10.6), muß ein wenig googeln, um eine ältere Version der Software auf einer der vielen Downloadseiten des Netzes zu finden. Ich nutze Github for Mac schon länger und hatte daher eine Version für »mein« Betriebssystem noch auf meiner Festplatte. (Warum Github nicht selber eine Version für ältere Macs zur Verfügung stellt, entzieht sich meiner Kenntnis.)
Jedenfalls haben Sie mit Github for Mac eine Stück Software, die es Ihnen ermöglicht, ohne das Terminal hinzuziehen zu müssen, Ihre RubyFrontier-Projekte mit Github zu synchronisieren.
Die Software überwacht im Hintergrund Ihre lokalen Repositorien und synchronisiert sie mit Github. Nach der Arbeit eines Tages könnte das zum Beispiel wie in obigem Screenshot aussehen, wo Änderungen auf ein commit warten.
Die ersten Schritte mit Git und Github mögen erst einmal ungewohnt für Nichtprogrammierer sein, die noch nie mit einem Versionskontrollsystem gearbeitet haben. Doch die Synchronisierung mit diesem Tool erleichtert nicht nur die Zusammenarbeit mehrerer Personen an einem Projekt, sondern bringt auch noch ein wenig zusätzliche Sicherheit. Sie haben auf Github nicht nur immer ein Backup Ihrer Daten, sondern auch eine vollständige History mit allen vorgenommenen Änderungen und können so – falls Sie sich einmal völlig »verrannt« haben, jederzeit mit einer älteren Version Ihres Projektes wieder neu aufsetzen.