Wenn man Git erst einmal unverbindlich ausprobieren will ohne gleich das ganze Team auf eine neues SCM-System umstellten zu müssen, ist git-svn genau das Richtige. Es verhält sich zum SVN-Repository hin wie ein normaler Client, bietet aber lokal alle gängigen Git-Features. Branches und Tags lassen sich sowohl lokal als auch remote einfach per Kommandozeile anlegen. Diffs und lokale Commits gehen rasend schnell, weil die komplette Historie lokal vorliegt. Dazu checkt git-svn initial jede Version aus dem SVN-Repository aus und spielt die Versionsgeschichte lokal nach. Das dauert dann bei 1500 Commits auch mal eine halbe Stunde oder länger, aber das muss man ja auch nur einmal machen:
$ git svn clone -s svn://svn.example.org/my-cool-project
Die Option -s
sorgt dafür, dass die Standard-SVN-Verzeichnisstruktur mit branches
, tags
und trunk
erkannt wird und auch korrekt in Git als Branches und Tags abgebildet wird. Abweichende Ordnernamen lassen sich über weitere Kommandozeilenparameter konfigurieren. Nach geduldigem Warten listet Git auch brav alle SVN-Branches sowie den lokalen master-Branch auf:
$ git branch -a
* master
remotes/production
remotes/trunk
Will man nun ein neues Feature implementieren, kann man sich einfach einen lokalen Branch erstellen:
$ git checkout -b my-new-feature
Darauf kann man nun gemütlich arbeiten, ohne von anderen Änderungen beeinträchtigt zu sein. Will man seine Änderungen an das zentrale SVN-Repository zurückschicken, muss man erst lokal commiten und anschließend ins SVN-Repository:
$ git commit -a
$ git svn dcommit
Wenn man zwischendurch an einer anderen Aufgabe weiterarbeiten will (oder muss), kann man jederzeit einen neuen Branch erstellen oder in den master-Branch zurückwechseln:
$ git checkout master
Die aktuellen Änderungen aus dem SVN-Repository (das Pendant zu svn update
) bekommt man mit:
$ git svn rebase
Ein bisschen ausführlicher und auf Englisch ist das Ganze auch in Bart’s Blog erklärt. Ansonsten helfen die umfangreichen Git-Hilfe-Seiten weiter. Zu fast jedem Befehl lassen sich mit git help <command>
weitere Informationen anzeigen.
0 Kommentare