Git auf Subversion

Die Versionsverwaltungssystem Git verwende ich schon länger in verschiedensten Zusammenhängen und bin immer wieder beigeistert.

git-svn ist ein Verbindungsstück zwischen Git- und Subversion-Repositories (z.B. praktisch, um lokal mit Versionsmanagement an einem bestimmten Modul zu entwickeln, ohne die Änderungen ins zentrale Subversion zu übernehmen, bzw. dies erst dann zu tun, wenn sie fertig sind).

Per “git svn clone”-Befehl wird ein Git-Repository angelegt, das mit einem Subversion-Repository verbunden ist (z.B. dem Entwicklungsserver). Änderungen können dann lokal stattfinden, Branches angelegt und gepflegt werden, ein “dcommit”-Befehl übermittelt die lokalen Änderunge wieder zurück zum Subversion-Repository.

Einige Befehle:

Subversion-Repository klonen:

git svn clone –username nico http://server/repository/trunk/

Danach kann damit ganz normal lokal als Git-Repository gearbeitet werden. Änderungen werden nicht direkt auf den Subversion-Server geschrieben, erst nach einem “dcommit” (siehe unten).

Updates von Subversion holen (anstatt “svn update” – vgl. rebase-Konzept von Git):

git svn rebase

Updates (also alle lokalen Revisions des aktuellen Branches!) ins Subversion-Repository einchecken

git svn dcommit

Möglicherweise gibt es Probleme beim Encoding der Commit-Meldung. Wenn Git meckert, ggf. folgendes einstellen (gilt dann für das aktuelle Git-Repository, aus dem der Git-Befehl aufgerufen wird):

git config i18n.commitencoding ISO-8859-1

Weiterführende Links: