Git Server einrichten

Aus Cowwwiki
Wechseln zu: Navigation, Suche

Git ist eine moderne Versionsverwaltung und wird u. a. auch für die Kernel-Entwicklung unter Linux benutzt. Neben GitHUB kann man sich auch lokal einen kleinen Git-Server einrichten. Ein ganz minimalistisches Beispiel sei hier beschrieben.

Voraussetzungen

SSH ist auf dem Server eingerichtet und Benutzer können sich über SSH zu dem Server verbinden.

Git auf der Server

Zuerst installiert man das Git-Paket auf dem System

apt get update && apt-get install git

Anschließend legt man dafür ein Verzeichnis fest, z. B.

cd /opt
mkdir git

Jetzt legen wir noch eine Gruppe an

adduser git
usermod johnnywalker -aG git
usermod jimbeam -aG git

Da später mehrere Leute in das Verzeichnis einchecken können sollen, müssen wir die Standardberechtigungen des Dateisystems anpassen. Dazu benötigen wir setfacl

apt-get install acl

Mit den ACLs (Access Control Lists) können granulare Zugriffsrechte auf Dateien und Verzeichnisse festgelegt werden. Außerdem lassen sich auch die Standardberechtigungen damit festlegen.

chmod g+s /opt/git // neu erstellte Dateien und Verzeichnisse sollen der Gruppe git gehören
setfacl -d -m g::rwx /opt/git // Owner und Gruppe sollen Schreib- und Leserechte haben
setfacl -d -m o::rx /opt/git // Alle anderen können nur lesen können

Nun können wir ein leeres Repository initialisieren. Die Zugriffsrechte werden jetzt automatisch korrekt gesetzt.

cd /opt/git
mkdir project.git
cd project.git
git --bare init

Initialer Commit beim Entwickler

Der Entwickler legt sich nun zuerst lokale auf seiner Maschine einen Ordner für das Projekt an:

cd /home/johnnywalker/
mkdir project
cd project
git init
git add .
git commit -m 'initial commit'
git remote add origin johnnywalker@gitserver:/opt/git/project.git
git push origin master

Check out

Der Check erfolgt ziemlich ähnlich.

git clone git@gitserver:/opt/git/project.git
cd project
vim README
git commit -am 'fix for the README file'
git push origin master

Quellen

http://unix.stackexchange.com/questions/1314/how-to-set-default-file-permissions-for-all-folders-files-in-a-directory

http://git-scm.com/book/de/v1/Git-auf-dem-Server-Einrichten-des-Servers