Git Server einrichten (Debian): Unterschied zwischen den Versionen

Aus MattWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Anleitung, um einen Git-Server unter Debian 8.0 und Apache 2.2 einzurichten.
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 ==
== Installation ==
  # apt-get install git gitweb
  # apt-get install git gitweb hightlight


== Repository auf Server anlegen ==
== Neues leeres Repository auf Server anlegen ==
Wird mit dem User gemacht, in dessen Zugriffsrechtekontext alles passieren soll.
Wird mit dem User gemacht, in dessen Zugriffsrechtekontext alles passieren soll.


  $ cd ~/
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
# 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.
 
$ 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
  $ mkdir git
  $ cd git
  $ cd git
  $ mkdir project.git
  $ git clone git@gitserver:/var/lib/git/project.git
  $ cd project.git
  $ cd project
  $ git init --bare
$ vim README
  Initialized empty Git repository in ~/git/project.git/
$ 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
 
 
[[Category:Linux]]
[[Category:Git]]

Aktuelle Version vom 2. September 2017, 15: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