Git Server einrichten (Debian)

Aus MattWiki

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

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/

Repository erstmalig 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";