Git Repository via GIT-Protokoll exportieren

Hi zusammen,

im folgenden will ich kurz erläutern, wie man ein GIT-Repository über das GIT-Protokoll freigeben kann.

Vorteile des GIT-Protokolls sind :

  • Viel schneller als SSH, HTTP usw.
  • Einfaches aufsetzen und freigeben

Nachteile:

  • Keine AUthentifizierung
  • Per Default nur Read-Access (ob das wirklich ein Nachteil ist wird sich noch zeigen)

Bisher haben wir bei uns im Team die Repositories über einen lokalen Apache für andere Teammitglieder freigegeben, die Konfiguration ist einfach, dennoch neige ich dazu, hierfür das GIT-Protokoll zu verwenden.

Hierfür sind folgende Schritte notwendig.

Installation des Git-Daemon mit

sudo apt-get install git-daemon-run

Am einfachsten lässt man den Daemon automatisch beim Systemstart hochfahren in dem man beispielsweise einen Eintrag in seine .bashrc macht

git daemon bzw.
git daemon --verbose --base-path=git-repo --export-all

Noch einfacher und schöner geht das Ganze, wenn man den Git-Daemon als System-V-Service unter Linux laufen lässt (auch sehr schön beschrieben unter [1].)

Hierzu legt man sich ein Startscript unter /etc/init.d/ an (git-daemon) und macht dieses ausführbar mit


chmod a+x git-daemon

Zuletzt wird dies noch in die System-V-Startskripte eingetragen mit

update-rc.d tomcat defaults

Der Daemon öffnet für sich den Port 9418, über den sich andere Teammitglieder nun Änderungen holen können.

Um ein Repository via git freizugeben, muss in dessen .git-Verzeichnis eine bestimmte Datei angelegt werden.

cd <Repo-Verzeichnis>/.git
touch git-daemon-export-ok

Um das Ganze noch einfacher zu machen schlage ich vor, ein Verzeichnis mit Symbolischen Links anzulegen, die auf die jeweiligen Git-Repositores verweisen.

sudo mkdir /git
ln -s <Pfad zum Git Repo> meinRepo.git

Das wars, Teammitglieder können sich nun Änderungen „fetchen“ mit folgendem Befehl:

git clone git://<IP>/git/meinRepo.git

Um das Repository für alle Schreibzugriffe freizugeben kann folgender BEfehl verwendet werden:

git config daemon.receivepack true

Achtung, mit den hier beschriebenen Befehlen kann wirklich jeder User schreibend auf die Repositores zugreifen, man sollte dies also nur dann tun, wenn man sich in einem geschützten Bereich befindet.

Damit die Dateien, die neu angezeigt werden auch mit den richtigen Berechtigungen angelegt werden, sollte noch die umask-Option für den Git-Core aktiviert werden.


git config --global core.sharedRepository = umask

und abschließend noch die umask für das .git-Verzeichnis im git-repository auf die korrekte umask (0002) setzen.

sudo umask 0002 . -R

Eine mögliche Alternative zum Git-Daemon ist die direkte Freigabe über das Filesystem. Hierbei hat man auch die Möglichkeit, Zugriffe per Linux ACLs zu begrenzen.

Nehmen wir also an, dass wir ein Git Repo direkt per Filesystem für das ganze Entwicklerteam freigeben wollen, dann wäre mein Vorschlag, hierfür auf jedem Entwicklungsrechner eine Gruppe „Git“ anzulegen mit

groupadd git

Anschliessend kann ein User „git“ angelegt werden, der anschliessend als Besitzer des Git Repositories angegeben werden kann.


useradd -g git git

passwd git (und ein geeignetes Passwort vergeben wie git:))

Anschliessend weisst man für das Git-Repository Lese bzw. Schreibrechte für den User Git zu mit


cd <git repo path>
chgrp git . -R
chmod g+wx . -R

Damit können alle User im gleichen Netzwerk über folgenden Befehl direkt auf das Git-Repository lesend und schreibend zugreifen.


git clone git@[deine ip]:/<Pfad zum Git-Repository>

Nachdem das zuvor für den Git User vergebene Passwort eingegeben wurde sollte ein kompletter Checkout passieren.

[1] : http://thejavamonkey.blogspot.com/2009/06/installing-java-and-tomcat-on-ubuntu.html


War dieser Blogeintrag für Sie interessant? Evtl. kann ich noch mehr für Sie tun.

Trainings & Know-How aus der Praxis zu

  • Apache Wicket 1.4.x, 1.5.x, 1.6.x
  • GIT – Best Practices, Einsatz, Methoden
  • Spring
  • Java
  • Scrum & Kanban
  • Agiles Arbeiten
Consulting & Softwareentwicklung

  • Requirements Engineering
  • Qualitätssicherung
  • Software-Entwicklung
  • Architektur
  • Scrum & Kanban
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s