Git Server einrichten (Debian): Unterschied zwischen den Versionen

Aus MattWiki
Keine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 14: Zeile 14:


== Installation ==
== Installation ==
  # apt-get install git gitweb
  # apt-get install git gitweb hightlight


== Neues leeres Repository auf Server anlegen ==
== Neues leeres Repository auf Server anlegen ==
Zeile 29: Zeile 29:
  $ cd project.git
  $ cd project.git
  $ git init --bare
  $ git init --bare
  Initialized empty Git repository in ~/git/project.git/
  Initialized empty Git repository in /var/lib/git/project.git/
$ nano description    # Projektbeschreibung einfügen


== Repository erstmalig befüllen ==
Danach, entweder
# Repository mit Inhalt eines lokalen repositories befüllen oder
# Das 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.
Dazu muss ein Repository für das Projekt lokal vorbereitet werden, und auf den Server gepusht werden.


Zeile 38: Zeile 43:
  $ git add .
  $ git add .
  $ git commit -m 'initial commit'
  $ git commit -m 'initial commit'
  $ git remote add origin git@gitserver:/opt/git/project.git
$ nano .git/description    # Projektbeschreibung einfügen
  $ git remote add origin git@gitserver:/var/lib/git/project.git
  $ git remote -v
  $ git remote -v
  $ git push origin master
  $ git push origin master
Zeile 45: Zeile 51:
  $ mkdir git
  $ mkdir git
  $ cd git
  $ cd git
  $ git clone git@gitserver:/opt/git/project.git
  $ git clone git@gitserver:/var/lib/git/project.git
  $ cd project
  $ cd project
  $ vim README
  $ vim README
Zeile 64: Zeile 70:
  # service apache2 restart
  # service apache2 restart


Projektroot anlegen:
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];
 
 
== Serverseitiges Backup ==
'''Konzept'''
* Auf Server
** Ein Skript zum Erstellen von Packages für alle relevanten Repositories erstellen
** Skript als Cronjob einhängen
* Auf Client
** Per SSH Packages der Repositories abholen


'''Codebeispiel für Packageerstellung'''
#!/bin/bash                                                                                       
                                                                                                   
cd /var/lib/git/<repo>.git/                                                                       
git bundle create /home/<user>/gitbackup/<repo>.git --all




[[Category:Debian]]
[[Category:Linux]]
[[Category:Git]]
[[Category:Git]]

Aktuelle Version vom 2. September 2017, 16:32 Uhr

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 description     # Projektbeschreibung einfügen

Danach, entweder

  1. Repository mit Inhalt eines lokalen repositories befüllen oder
  2. Das 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];


Serverseitiges Backup

Konzept

  • Auf Server
    • Ein Skript zum Erstellen von Packages für alle relevanten Repositories erstellen
    • Skript als Cronjob einhängen
  • Auf Client
    • Per SSH Packages der Repositories abholen

Codebeispiel für Packageerstellung

#!/bin/bash                                                                                         
                                                                                                    
cd /var/lib/git/<repo>.git/                                                                         
git bundle create /home/<user>/gitbackup/<repo>.git --all