Git lokal (offline) für Synchronisation nutzen – Teil 2

Erster Teil: Aufsetzen und lokales Klonen eines Git Repositories unter Windows 7

Heute: Synchronisierung des Linux-Rechners mit bestehendem Repository auf Windows 7-Notebook übers Netzwerk.

Unter Debian ist Git schnell installiert:

$ apt-get install git-core

Git benötigt nun Zugriff über SSH, daher wird erstmal unter Windows ein SSH-Server eingerichtet.

Ich hatte erst diesen hier probiert: http://www.freesshd.com/?ctt=download
(falls nach Starten des Dienstes kein Symbol im Systray auftaucht, Kompatibilitätsmodus für Windows XP einstellen! Außerdem ggf. Firewall-Blockierung aufheben und Zugriff auf PC erlauben)

es jedoch nicht hinbekommen, ein anderes Arbeitsverzeichnis als C:\Windows\system32 einzustellen und dass Git das Repository findet.

Die Alternative war dann, OpenSSH über Cygwin laufen zu lassen, nach dieser Anleitung:
http://www.shannoncornish.com/blog/2009/04/git-server-windows-2008/

Den hier angelegten Benutzer “git” benutze ich allerdings nicht, sondern meinen eigenen Account auf dem Windows-Notebook. Dazu mounte ich unter Cygwin wieder im eigenen Account das jeweilige Repository:

$ mkdir /home/git/Kizzes
$ mount C:/Users/fs/Datenpartition/workspace/Kizzes /home/git/Kizzes

Der sshd Dienst sollte noch laufen, also kann ich auf dem Linux-Rechner dann entsprechend zugreifen:

$ git clone ssh://fs@192.168.2.103/home/git/Kizzes workspace/Kizzes

und schon habe ich das geklonte Repo unter workspace/Kizzes

weiter geht es mit
a) Synchronisation zwischen den einzelnen Repositories
b) Branches

Hilfreiche Links:

http://www.cygwin.com/cygwin-ug-net/cygwin-ug-net.html – Cygwin Dokumentation

Git lokal (offline) für Synchronisation nutzen

Meine Situation:

verschiedene Datenträger:
1. NTFS-Festplatte aus altem Notebook, auf der sämtliche aktuellen Projekte liegen, an denen ich alleine arbeite.
2. Externe Backup-Festplatte, auf der bisher mit einem einfachen Synchronisations-Tool das Projektverzeichnis abgebilded ist
3. Jungfräuliche NTFS-Datenpartition auf neuem Notebook mit Windows 7
4. Desktop-PC mit Debian Lenny, frisch für die Entwicklung aufgesetzt.
5. 2,5″ Festplatte mit portablem Betriebssystem (muss noch komplett eingerichtet werden)

(1) dient als Original-Quelle; (2) soll weiterhin als Backup genutzt werden, (3), (4) und (5) sollen gleichwertige Arbeitsumgebungen sein, wobei immer nur jeweils eine genutzt wird.

Mit einer zentralen Versionsverwaltung wie SVN hätte ich mich für einen Ort als Server für das Repository entscheiden müssen, der von (3), (4) und (5) gleichermaßen erreichbar ist, die Wahl wäre dafür wohl auf unser Firmen-Intranet gefallen, eine Internet-Verbindung ist ja i.d.R. überall vorhanden.

Der große Unterschied bei GIT ist nun, dass jede Kopie als vollwertiges Repository fungiert und Commits erst einmal lokal erfolgen. Dies geht wiederum so schnell (auch wenn mal keine Netz-Verbindung besteht) dass es den Workflow nicht stört und man die Faustregel “Wenn sich die Änderung nicht in einem Satz zusammenfassen lassen, ist es zu viel für einen Commit” leichter beherzigen kann.

Ich arbeite also auf dem einem System, kann darauf isoliert arbeiten und committen, bis ich den Arbeitsplatz wechsle, dann müssen nur die beiden betroffenen Repositorys gemerged werden (schrecklich dieses Denglisch, aber das bringt unser Job so mit sich…) und ich kann auf dem anderen System genauso weitermachen. Da GIT das Arbeiten mit Branches sehr einfach macht, ist es dabei sinnvoll, jedes Mal einen Branch abzuzweigen und schlussendlich wieder zusammenzuführen. Habe ich doch einmal an unterschiedlichen Repositorys parallel gearbeitet, sollte es auch kein Problem sein, diese Änderungen zusammenzuführen.

In diesem Artikel beschäftige ich mich nun mit der Installation von GIT auf Windows und der initialen Einrichtung der Repositories.
Continue reading “Git lokal (offline) für Synchronisation nutzen”