Logo von Developer

Suche
preisvergleich_weiss

Recherche in 2.273.494 Produkten

Andreas Krüger 117

Mehrere Remotes

Im normalen Entwickleralltag nutzt man die Standardmöglichkeiten von Git. Aber gelegentlich können selten genutzte Fähigkeiten das Leben angenehmer machen – wenn man sie denn kennt.

Das Git-Repository auf der eigenen Festplatte kann mit mehreren "Remotes" kommunizieren, also fernen Git-Repositorys, wie sie normalerweise auf irgendwelchen Git-Servern liegen.

Mehrere Remotes können zum Beispiel nützlich sein, wenn man temporär mit einer Person zusammenarbeitet, die auf den offiziellen Git-Server keinen Zugriff hat. Dem Autor ist das mehrfach passiert, zuletzt mit einer Praktikantin. Einerseits wünschte das betreffende Projekt ihre Mitarbeit. Andererseits wollte das Unternehmen für die (kurzzeitige) Mitarbeit nicht den Aufwand treiben, der Praktikantin einen Account im Firmen-LDAP einzurichten. Am LDAP-Account hängt aber der Zugriff auf das offizielle Repo. Was nun? Bekommt man die Zusammenarbeit trotz der Rahmenbedingungen hin?

Das geht recht problemlos, indem man ein zweites, temporäres Remote-Repo anlegt, auf das beide zugreifen können.

Die vielfältigen Fähigkeiten von Git, Teil 1
Temporäres zweites Git-Remote (Abb. 3)

Schnell mal eben ein temporäres Remote

Es gibt verschiedene Möglichkeiten, wie man ein temporäres Repository aufsetzen kann, auf das zwei Personen A und B zugreifen können.

Besonders bequem hat man es, wenn es irgendwo einen Rechner gibt, auf dem Git installiert ist und auf den sowohl A als auch B per ssh zugreifen können. Das könnte ein ohnehin vorhandener Server sein. Auch eine kurzfristig in einer Cloud oder bei einem Provider angemietete virtuelle oder reale Maschine ist brauchbar. Selbst ein Winzling (ein Raspberry Pi oder Ähnliches) reicht dafür aus. Einer der beiden Arbeitsplatzrechner (der von A oder der von B) lässt sich ebenfalls prima einsetzen, Vertrauen zwischen A und B vorausgesetzt. Ein Docker-Container ist ebenfalls nutzbar.

Für einen temporären Repository-Server braucht man sich normalerweise keine Gedanken über Backups zu machen (was die Sache weiter vereinfacht), denn alle Informationen sind in den lokalen Repositorys ebenfalls vorhanden. Was wichtig ist, wandert über kurz oder lang ins offizielle Repository. Nach Ende der Kooperation kann das temporäre Repository einfach ohne Weiteres gelöscht werden.

Ist ein Server gefunden, ist das temporäre Respository mit wenigen Handgriffen eingerichtet. Im folgenden Beispiel haben beide auf dem Host server.example.org Zugriff auf den gemeinsam genutzten User user. Einer von beiden bringt die Sache in Gang:

ssh user@server.example.org mkdir -p collab-repo
ssh user@server.example.org cd collab-repo '&&' git init --bare

Anschließend richtet A für sein lokales Repository ein neue Verbindung zu einem "Remote" mit dem Namen collab ein:

git remote add collab user@server.example.org:collab-repo

und füllt das neue temporäre Repo:

git push collab master

B holt sich das Material mit dem Befehl:

git clone user@server.example.org:collab-repo

Nutzen A und B für den ssh-Zugriff auf server.example.org unterschiedliche Nutzer auser und buser, wird es geringfügig komplizierter. Gewöhnlich wird man eine gemeinsame Gruppe wie ggroup auf server.example.org finden oder erstellen, der auser und buser beide angehören.

Dann kann A das Repository wie folgt initialisieren:

ssh auser@server.example.org mkdir -p collab-repo
ssh auser@server.example.org chgrp ggroup collab-repo
ssh auser@server.example.org chmod g+sw collab-repo
ssh auser@server.example.org cd collab-repo '&&' git init --bare --share=group

Anschließend nutzt A auser@server.example.org:collab-repo und B buser@server.example.org:/home/auser/collab-repo für den Zugriff.

Eventuell ist es noch nötig, /home/auser mit chmod a+rx /home/auser für lesende Zugriffe zu öffnen. Das ermöglicht unter Umständen lesenden Zugriff durch andere User von server.example.org auch auf andere Dateien von auser. Will man das vermeiden, nutzt man alternativ ein neutrales Verzeichnis, z. B. /var/lib/collab-repo.

117 Kommentare

Themen: