Git auf einer Synology

Nachdem Drupal auf git umgestiegen ist, haben wir uns auch entschlossen TortoiseSVN zu verabschieden. Durch die viele Projekte und Unterrichtseinheiten sammelt sich viel Quelltext, welcher in verschiedene Versionen im Umlauf ist. Eine öffentliche Ablage und eine Arbeitsversion sind dennoch nicht auf diesen Fall beschränkt.

In diesem Artikel installieren wir git auf einer Synology DS508+ als Repository Serverdienst und richten uns eine entsprechende Arbeitskopie aus einer Windowsumgebung ein. Learning by doing.

Git installieren

root@DiskStation> ipkg list|grep git
...
root@DiskStation> ipkg install git

Ordnung sollte sein ...

Ich hab bei einer DS508+ ein Volume /volume1
Wir brauchen ein Work Tree und ein Repository.

Repository: /volume1/GitRoot
Arbeitskopie: \\DiskStation\data\GitWorkTree oder C:\GitWorkTree

Das Repository wird vom System Administrator gepflegt, die Work Trees von den Benutzern durch clone

Repository Hauptordner erstellen

root@DiskStation> mkdir /volume1/GitRoot

Ich hab mich für root entschieden um den Sicherheitsaspekt des Haupt Repository zu verdeutlichen. Wir können dieses Verzeichnis durch ein symlink mit /volume1/data verknüpfen, um eine Ansicht zu erlauben.

Projekt Repository erstellen

root@DiskStation> mkdir -p /volume1/GitRoot/test
root@DiskStation> cd /volume1/GitRoot/test
root@DiskStation> git init --bare --shared=...

Zu Beachten ist dabei die Option --shared.

Die Berechtigungen setzen für Work Trees Benutzer.

DiskStation> chmod -R g+ws *
DiskStation> chgrp -R users *
DiskStation> git config core.sharedRepository true

Projekt Arbeitszweig (Work Tree) erstellen

Die aktuellen Projekte werden auch in einem vorbestimmten Ordner abgelegt.
Dieser kann sowohl lokal als auch auf der DiskStation abgespeichert werden, solange bei Bedarf Zugriff besteht.

Um Git auf Windows zu Integrieren, setzen wir dieselbe Lösung wie github ein. Die Git Bash wird auf dem Ordner GitWorkTree ausgeführt.

 git clone ssh://DiskStation/volume1/GitRoot/test

Note: sh: git-upload-pack: not found bedeutet das /opt/bin im $PATH auf der DiskStation fehlt. ln -s /opt/bin/git-upload-pack /usr/bin/git-upload-pack (also receive pack)

In dieser Arbeitskopie können wir nun mit unserem eigenem git Server kommunizieren.

Fazit

Glücklich! Wir migrieren nun alle SVN Projekte und melden uns mal wieder.