Startseite>Quellcode managen mit Git und dem Raspberry Pi
Aus Raspberry Pi Geek 04/2019

Quellcode managen mit Git und dem Raspberry Pi

© Piotr Trojanowski, 123RF

Git à la RasPi

Roman Jordan

Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.

Als Leser dieser Zeitschrift gehören Sie zu den Menschen, die einen Rechner nicht nur zum Spielen nutzen. Vielleicht gehören Programmieren, das Erstellen von Internet-Seiten oder Texten zu Ihrem Tätigkeitsfeld. Dabei ist es sinnvoll, einen erreichten Stand zu sichern und anschließend weiterzuarbeiten. Manchmal hilft auch ein Blick in eine vorherige Version eines Codes oder Dokuments weiter. Das Versionsverwaltungsprogramm Git unterstützt Sie mit einfacher Bedienung und großem Funktionsumfang dabei, ein Git-Server vervollständigt dieses Umfeld.

Server-Zeit

Es gibt etliche Git-Hoster, zu den bekanntesten Vertretern der Szene zählen Github, Sourceforge und Gitlab. Viele ermöglichen das Anlegen eigener Repos, die Kurzform von Repository. Ein eigenes Repo kostet manchmal Geld, gelegentlich gibt es projektbezogene Einschränkungen, und möglicherweise bekommt der Hoster früher oder später sogar einen neuen Eigentümer.

Ein eigener Git-Server schafft hier Unabhängigkeit und eignet sich gut zum Sammeln von Erfahrungen. Der Raspberry Pi bietet sich als guter Server-Kandidat an: Dank seiner Netzwerkfähigkeit und des in Raspbian integrierten OpenSSH-Servers (im Folgenden als SSH-Server bezeichnet) mutiert er mit wenigen Handgriffen zu einem SSH-basierten Git-Server. Die oft bemängelte relativ geringe Bandbreite in Bezug auf Massenspeicherzugriffe spielt bei kleineren Projekten nur eine untergeordnete Rolle.

Ein Git-Server bringt gleich mehrere Vorteile. Die einzelnen Repos liegen an einem Ort. Das erleichtert sowohl die Datensicherung als auch das Wiederfinden der Projekte und ermöglicht deren Synchronisation sowie eine Zugriffssteuerung. Greifen mehrere Anwender von mehreren Rechner auf ein Projekt zu, empfiehlt sich generell ein Server. Zudem übernimmt das Server-Repo eine zusätzliche Funktion als Backup. Handelt es sich bei Arbeitsrechner und Server um verschiedene Geräte, ergibt das ein weiteres Sicherheitsplus.

Dieser Artikel setzt einige Grundkenntnisse im Umgang mit Git voraus. Einen guten Einstieg [1] finden Sie beispielsweise in einem zweiteiligen Git-Workshop [2] unserer Schwesterzeitschrift LinuxUser und in dem Online-Buch “Pro Git” [3].

Protokollfragen

Aus grundlegender Sicht entspricht ein Git-Server einem Dateiserver: Er stellt den Speicherplatz für die Repos bereit. Der Git-Server horcht jedoch nicht an einem für Git reservierten Netzwerkport. Stattdessen unterstützt Git vier unterschiedliche Protokolle zum Datentransfer. Eine detaillierte Beschreibung dazu finden Sie im dritten Kapitel des bereits genannten Buchs “Pro Git”. Dieser Artikel beschreibt den Aufbau eines Git-Servers, der SSH für den Transfer verwendet. Die unter Linux weitverbreitete Secure Shell bietet eine verschlüsselte Datenübertragung sowie eine ausgereifte Identitätsprüfung.

Zunächst gilt es, auf dem RasPi ein wenig Software zu installieren. Die Anleitung geht von einem frisch installierten Raspbian-System aus, auf dem Sie den SSH-Zugang aktiviert haben, etwa über die Boot Options in raspi-config. Zunächst starten Sie mittels ssh [email protected]RasPi-IP eine Remote-Sitzung mit dem Raspberry Pi. Funktioniert die Namensauflösung in Ihrem Netzwerk, nutzen Sie für alle im Artikel genutzten Kommandos statt der IP-Adresse den Namen des Rechners (typischerweise: raspberrypi). Die erste Verbindungsaufnahme erfordert das Bestätigen der Identitäten (siehe Kasten “Kontaktaufnahme”).

Kontaktaufnahme

SSH bringt bei der ersten Kontaktaufnahme eine Meldung auf den Bildschirm (Abbildung 1). Nach deren Bestätigen startet ein verschlüsselter Datenaustausch. Dabei trägt der lokale Rechner das Remote-System, hier also den RasPi, in die Liste der vertrauenswürdigen Hosts des Anwenders unter ~/.ssh/known_hosts ein.

Bei folgenden Verbindungsaufnahmen ermöglichen diese Daten eine Umgebungsprüfung. Ändert sich etwas an der Verbindung, beispielsweise durch einen zwischengeschalteten Mithörer oder eine neue IP-Adresse, erfolgt kein Verbindungsaufbau. Um diesbezüglichen Problemen aus dem Weg zu gehen, sollten Sie Ihren Router idealerweise so konfigurieren, dass der RasPi immer dieselbe IP erhält.

Abbildung 1: Beim ersten Kontakt mit dem zukünftigen Git-RasPi verlangt SSH eine Bestätigung.

Abbildung 1: Beim ersten Kontakt mit dem zukünftigen Git-RasPi verlangt SSH eine Bestätigung.

Nun nehmen Sie via SSH auf dem RasPi eine Systemaktualisierung vor (Listing 1, Zeile 2 und 3) und installieren das Paket git (Zeile 4). Anschließend legen Sie den Anwender git an (Zeile 5) und geben ihm ein beliebiges Passwort (Zeile 6). Danach testen Sie auf dem RasPi das angelegte Konto mittels su - git (Zeile 7). Im letzten Schritt legen Sie als Nutzer git das Verzeichnis repos an (Zeile 8) und verlassen anschließend die Git-Umgebung (Zeile 9). Am Ende der Sitzung erfolgt ein Reboot des RasPi (Zeile 10).

Listing 1

$ ssh [email protected]
[email protected]:~ $ sudo apt update
[email protected]:~ $ sudo apt full-upgrade
[email protected]:~ $ sudo apt install git
[email protected]:~ $ sudo useradd -m -c "Git-Repo-Anwender" -s $(which bash) git
[email protected]:~ $ sudo passwd git
[email protected]:~ $ su - git
[email protected]:~ $ mkdir -p repos
[email protected]:~ $ exit
[email protected]:~ $ sudo reboot

Das Kommando useradd in Zeile 5 legt den Anwender git an – ein typischer Name in diesem Umfeld. Der Parameter -c gibt eine Beschreibung des Anwenders mit, -s $(which bash) setzt die Bash als Login-Shell für git. Ohne diese Angabe erhält der User die Vorgabe-Shell, bei RasPi wäre das Sh. Die Sh besitzt Einschränkungen in der Bedienung und ist nicht so komfortabel wie die Bash.

Repos marsch

Weiter geht es mit dem Git-Repo, das Sie auf dem Server hosten wollen. In unserem Beispiel legt auf dem RasPi der Anwender git im Unterverzeichnis repos/ ein Remote-Repository namens projekt an. Die Inhalte dafür liegen lokal unterhalb des Verzeichnisses repos/ im Home-Verzeichnis des anzulegenden Anwenders git. Listing 2 zeigt, wie Sie das Git-verwaltete Projekt in Ihrem Home-Verzeichnis erstellen. Das Kommando git log (letzte Zeile), aufgerufen im Projekt-Verzeichnis, zeigt Informationen über das Repo an und dient lediglich als Kontrolle.

Listing 2

$ cd
$ mkdir projekt
$ cd projekt
$ echo "Das ist mein Projekt." > info.txt
$ git init
$ git add info.txt
$ git commit -m "Erster Commit"
$ git log

Ein Git-Server hostet typischerweise nur Bare-Repos. Ein Bare-Repo, also ein nacktes oder bloßes Repo, besitzt im Gegensatz zu einem normalen Repo kein Arbeitsverzeichnis – auf dem Server wäre das auch sinnlos.

Zum Initialisieren des Repos auf dem Server gibt es zwei grundlegende Varianten und einige Mischformen. Bei Variante 1 erstellen Sie aus dem lokal vorhandenen Repo ein Bare-Repo und kopieren es auf den Server, beispielsweise per Scp. Anschließend klonen Sie vom Git-Server das Projekt in ein neues Verzeichnis auf den lokalen Rechner; alternativ benennen Sie das ursprüngliche Projektverzeichnis um. Es empfiehlt sich, das ursprüngliche Verzeichnis erst dann zu löschen, wenn Sie geprüft haben, dass die gewünschten Dateien auch der Versionsverwaltung unterliegen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland