Bislang habe ich meinen Code in einem lokalen Git auf meinem Desktop verwaltet. Da ich auch remote von einem lokalen Labtop oder per VPN verbundenen remoten Labtop auf den Code zugreifen möchte musste das lokale Git Repository umgestellt werden. Bei mir läuft eine kleine Raspberry als LAN Server und der ist dafür ideal.
Es finden sich diverse Beiträge zu dem Thema im Netz aber es dauerte etwas bis ich die optimale Lösung gefunden habe. Es ist nicht schwer wenn man weiss wie.
Voraussetzungen
1) Es existiert ein Server mit git (Die folgenden Beispiele sind für ein raspbian (Linux))
2) Der lokale Benutzer muss auch auf dem LAN Server konfiguriert sein sofern kein eigener Benutzer für den Git Server eingerichtet wird (s.u. wie man einen separaten Benutzer für git einrichtet)
Umzug eines lokalen gits auf einen remoten Server
Zuerst muss man das .git Verzeichnis des lokalen Repositories in ein tar packen.
cd /home/framp/raspiBackup/.git
tar -pcf ../raspiBackup.tar *
Dann legt man auf dem Git Server (raspifix bei mir) ein Verzeichnis /home/framp/git/raspiBackup.git an und entpackt dort das tar file
tar -xf raspiBackup.tar *
Danach konfiguriert man noch das Repository in ein bare Repository um
git config --bool core.bare true
und schon ist das Reporitory bereit zur Nutzung.
Das alte lokale Repository sollte man vielleicht noch sichern.
mv /home/framp/raspiBackup /home/framp/raspiBackup_local
Anschliessend legt man auf den lokalen Systemen ein neues Repository welches auf das remote Repository zugreift, an.
cd /home/framp
git clone framp@raspifix:/home/framp/raspiBackup
Damit man auch lokale Änderungen auf den Server pushen kann kopiert man seinen jeweiligen public Key aus ~/.ssh/id_rsa.pub auf den Server. Falls er noch nicht existiert generiert man ihn vorher ohne Passphrase (ansonsten muss man noch den ssh-agent konfigurieren - eine Passphrase ist aber im lokalen Netz overkill) mit
ssh-keygen
und kopiert ihn dann mit
ssh-copy-id framp@raspifix
auf den Server. Danach passt man noch die git Configurationsdateien im .git Unterverzeichnis an. ~/.gitconfig existiert ja schon und wird weiterverwendet.
Nun kann man nach herzenslust von seinen verschiedenen Clients Code pullen und pushen.
Eigenen Benutzer für den git Server benutzen
In diesem Falle ist es nicht notwendig, dass die Benutzer, die auf dem Git arbeiten wollen, eine identische Benutzerid auf dem Server haben.
Will man das Repository mehreren Benutzern verfügbar machen sollte man einen separaten Benutzer, z.B. mit dem Namen git, anlegen. Das geht wie folgt:
sudo adduser git
su git
cd
mkdir .ssh
Danach sollte man verhindern, dass sich jeder mit dem git Benutzer anmelden kann. Dazu editiert man die /etc/passwd und die Zeile die für git zuständig ist und ändert die Logonshell
git:x:1001:1002:,,,:/home/git:/bin/bash
in
git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell
Damit die Benutzer auf das Git zugreifen können muss jeder Benutzer seinen ssh key ~./ssh/ir_rsa.pub dem Server Administrator geben und der hängt den key dann als Benutzer git an die existierende /home/git/.ssh/authorized_keys Datei an.
Auf das remote Repository zugreifen kann dann jeder Benutzer mit (Nun Benutzer git anstatt framp)
cd /home/framp
git clone git@raspifix:/home/git/raspiBackup
Danach kann man nach herzenslust mit seinen verschiedenen Benutzern Code pullen und pushen.
Es gibt auch noch andere Ansätze, wo man das git Repository einer bestimmten Gruppe (z.B. Development) zuweist und die Benutzer in diese Gruppe aufnimmt. Siehe dazu die folgenden Links.
Links
Git - Einrichten eines Servers

