Seit kurzer Zeit nutze ich Git (zusammen mit SVN). Der Vorteil ist, dass ich lokale Commits sammeln kann, und diese gebündelt ins SVN übertragen kann. Die Schritte zur Einrichtung habe ich hier mal zusammen getragen.
1. Vorarbeiten: Git konfigurieren
1.1. Eigenen Nutzer in globaler Konfiguration angeben
Zuerst sollte man in der globalen Git-Konfiguration sich selbst als Nutzer eintragen.
git config --global -e
[user] name = Ronny Friedland email =
1.2. Authors Datei erstellen
/home/gituser/fooproject-authors.txt
h.mustermann = Hans Mustermann f.musterfrau = Frieda Musterfrau
Wenn man sich für ein authors-file entscheidet, muss diese immer aktuell gehalten und neue Logins nachgetragen werden.
1.3. Projekt auschecken
Die bisherigen Schritte sollten genügen, um das Projekt aus dem SVN auszuchecken. Der folgende Befehl checkt den trunk vom Repository unter http://localhost/svn/fooproject in das Verzeichnis /home/gituser/fooproject/checkout aus. Zusätzlich wird das eben erstellte authors-file angegeben.
git svn clone http://localhost/svn/fooproject/ --authors-file=/home/gituser/fooproject-authors.txt /home/gituser/fooproject/checkout --stdlayout
Dies kann je nach Größe des Repositories eine Weile dauern.
1.4. Projektspezifische Konfiguration anpassen
Sofern projektspezifische Anpassungen für Git notwednig sind, können diese in der lokalen Konfiguration gemacht werden.
git config -e
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true whitespace = [svn-remote "svn"] url = http://localhost/svn/fooproject/trunk fetch = src/trunk:refs/remotes/trunk branches = src/branches/*:refs/remotes/* tags = src/tags/*:refs/remotes/tags/* [svn] authorsfile = /home/gituser/fooproject-authors.txt [gui] wmstate = normal geometry = 811x377+132+449 166 169
2. Mit Git arbeiten
2.1. Ins SVN committen
Nach einer Menge lokaler Git-Commits kann man das Ganze ins SVN übertragen. Der Befehl dafür ist git svn dcommit
2.2. Aktuellen SVN Stand holen
Die aktuellen Quellen aus dem SVN können mit Hilfe von git svn rebase geholt werden.
Git beschwert sich z.B. beim Aktualisieren der Sourcen, wenn es lokale Änderungen gibt, die noch nicht eingecheckt wurden. Abhilfe schafft hier git-stash.
git stash git svn rebase git stash pop