Git Server einrichten (Debian)
Anleitung, um einen Git-Server unter Debian 8.0 und Apache 2.2 einzurichten.
Quelle: Pro Git-Handbuch v2 von https://git-scm.com/book/en/v2
Es bestehen mehrere Verfahren, um mit einem Git-Server zu kommunizieren:
- Lokal Dateizugriff via Filesystem
- HTTP "dumb" Bis Version 1.6.6 → Zugriff via HTTP/HTTPS nur Read-Only
- HTTP "smart" Ab Version 1.6.6a
- SSH
- Git-Protokoll Ohne Authentifizierung, daher schnell und für große Repositories
Nachfolgende Anleitung bezieht sich auf SSH, und erfordert daher SSH Zugriff.
Installation
# apt-get install git gitweb hightlight
Neues leeres Repository auf Server anlegen
Wird mit dem User gemacht, in dessen Zugriffsrechtekontext alles passieren soll.
In Debian geht GitWeb auf /var/lib/git, daher sollte das Verzeichnis dort angelegt werden (Root notwendig):
# cd /var/lib/git # mkdir project.git # chown gituser:gituser project.git
Mit dem Git-User:
$ cd project.git $ git init --bare Initialized empty Git repository in /var/lib/git/project.git/ $ nano .git/description # Projektbeschreibung einfügen
Danach entweder Repository mit Inhalt eines lokalen repositories befüllen oder das leere Repository auf einen neuen Client herunterladen.
Serverrepository aus lokalem Repository befüllen
Dazu muss ein Repository für das Projekt lokal vorbereitet werden, und auf den Server gepusht werden.
$ cd myproject $ git init $ git add . $ git commit -m 'initial commit' $ nano .git/description # Projektbeschreibung einfügen $ git remote add origin git@gitserver:/var/lib/git/project.git $ git remote -v $ git push origin master
Repository auf anderen Client runterladen
$ mkdir git $ cd git $ git clone git@gitserver:/var/lib/git/project.git $ cd project $ vim README $ git commit -am 'fix for the README file' $ git push origin master
GitWeb einrichten
Das GitWeb-Paket in Debian erstellt automatisch alle notwendigen Dateien.
Benötigte Apache-Module:
- mod_alias
- mod_cgi
- mod_cgid
Aktivieren, falls notwendig (mod_alias ist schon aktiviert):
# a2enmod cgi # a2enmod cgid # service apache2 restart
Gitweb-Einstellungen sind in
# nano /etc/gitweb.conf
Dort muss ggf. angepasst werden:
$projectroot = "/var/lib/git";
Für Syntax-Highlighting des BLOB-Quelltexts ist das Debian Paket "Highlight" notwendig sowie folgende Zeile in der Conf-Datei:
$feature{'highlight'}{'default'} = [1];