Ein Repository von SVN nach Git migrieren

,

Zurzeit bin ich dabei, mich tiefer in Git einzuarbeiten. Dazu versuche ich einzelne Projekte aus unserem SVN-Server in unseren GitLab-Server zu verschieben.

Nachfolgend Ressourcen und Informationen, die mir dabei so auffielen.

Ressourcen

Informationen

  • Mit TortoiseGit geht es per GUI, aus SVN auszuchecken in ein ein Git-Repository. Beispiel:
    git.exe svn clone "https://svn.example.org/svn/MyCompany/ZetaResourceEditor" 
        "C:\Ablage\ZetaResourceEditor" -T / 
        --authors-file=c:\ablage\users.txt
    
    (Umbrüche nur zwecks besserer Lesbarkeit)
  • Falls der Master-Branch nicht in „Trunk“ liegt, dies extra angeben in der GUI. Bei mir hängt er z. B. meist direkt im Root, also / angeben.
  • Falls es Branches gibt, diese mit nachfolgendem PowerShell-Befehl migrieren:
    git for-each-ref --format='%(refname)' refs/remotes | % { $_.Replace('refs/remotes/','') } | % { git branch "$_" "refs/remotes/$_"; git branch -r -d "$_"; }
    
  • Anschließend dann noch im lokalen Root-Ordner des Repository mit git remote add origin git@my-git-server:myrepository.git das Git-Remote setzen (siehe Anleitung)
  • git push origin --all und ggf. noch git push origin --tags aufrufen im lokalen Root-Ordner des Repository, um ins Remote zu committen.
  • Falls im SVN der Branch „Master“ heißt und im Git der normale Branch „Main“ heißt, jetzt noch einen Merge-Request stellen und mergen.
  • Meistens lösche ich dann lokal den ganzen Ordner und checke nochmals neu aus Git aus. Ansonsten unbedingt lokal auf den neuen Branch (meistens „main“) wechseln.

Die „users.txt“-Datei hat folgenden Aufbau:

mmueller = Max Müller <mmueller@example.com>
tschmid = Tanja Schmid <tschmid@example.com>