Synchronisieung mit Git

Wenn man mehrere Systeme hat an denen man arbeitet kommt öfters mal die Frage auf wie man sie miteinander synchronisieren kann. Natürlich ist das Kopieren per Hand dabei nicht wirklich eine nutzbare Alternative, da dabei immer ein paar Änderungen und Dateien untergehen können. Allerdings gibt es einige Tools die das ganze erleichtern sollen. Dabei reicht die Palette von einfachen Skripten über Programme wie rsync und rsnapshot bis zu Versionsverwaltungssystemen wie Subversion, CVS oder Git.

Obwohl rsync oder rsnapshot durchaus zur Synchronisierung von Verzeichnissen und Erstellung von Backups gedacht sind, fand ich es etwas umständlich mit ihnen meine beiden Systeme auf dem selben Stand zu halten. Deshalb habe ich mich für die Synchronisationsstrategie mit Versionsverwaltungssystemen entschieden.

Ich hatte zwar bereits Erfahrungen mit CVS und Subversion gesammelt, allerdings auch viel über die Vorzüge von Git gehört. Aus diesem Grund wollte ich es einmal ausprobieren. Bisher bereue ich diese Entscheidung nicht. Die Synchronisation läuft sehr schnell, es ist einfach zu bedienen und die dezentrale Architektur ermöglicht es zu jeder Zeit ein Projekt auf dem lokalen Rechner zu starten.

In meinem Fall habe ich natürlich meinen Homeserver in die ganze Geschichte mit einbezogen, indem ich meine Repositories auf ihm ablege und meine beiden Rechner mit dem Tracking feature synchronisiere. Ein Vorteil von diesem Vorgehen ist natürlich, dass meine gesamten Daten in einer weiteren Kopie auf dem Server vorliegen. Außerdem erleichtert es das Erstellen von Backups an einem zentralen Punkt, wobei sich für diese Aufgabe natürlich rsync oder rsnapshot anbieten 😉

Neben diesen eher sicherheitsrelevanten Aspekten ermöglicht mir gitweb noch den einfachen Zugriff auf meine Daten von jedem PC mit Internet. Da es sich bei gitweb um ein CGI Skript handelt musste ich bei lighttpd das CGI Modul aktivieren. Das geht recht einfach mit:

sudo lighttpd-enable-mod cgi
sudo /etc/init.d/lighttpd force-reload

Damit ich meine Repositories vom Internet jedoch durchstöbern konnte musste ich dies zunächst noch erlauben. Dafür ist ein Eintrag in der Datei /etc/lighttpd/conf-enabled/10-cgi.conf nötig:

$HTTP["host"] =~ "virtual.host.example.org" {
 alias.url += ( "/cgi-bin/" => "/pfad/zum/cgi/verzeichnis" )
 $HTTP["url"] =~ "^/cgi-bin/" {
 cgi.assign = ( "" => "" )
 }
}

Das sollte den Zugriff von außen erlauben. Alles in allem kann ich dieses Vorgehen nur empfehlen. Es erleichtert mir das Synchronisieren ungemein und ich kann sogar zu älteren Versionen zurückkehren. Außerdem ist Git ein perfektes Tool für Programmierer um ihren Code zu sichern und alle Änderungen beizubehalten.

Leave a Reply