Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

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

How To Create a Remote Shared Git Repository

Git Website

Git Reference

Kommentar schreiben

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.