Von Gast (nicht überprüft) , 29 April 2026

Warum migrieren

SVN funktioniert seit zwei Jahrzehnten. Aber sein zentralisiertes Modell, langsames Branching und Schwierigkeiten mit moderner Tooling-Integration drangen die meisten Teams zu Git.

Zwei Migrationspfade

  • git-svn - Brucke zwischen den Systemen.
  • One-Shot-Konvertierung.

Vorbereiten

# authors.txt
jdoe = Jane Doe <[email protected]>
bsmith = Bob Smith <[email protected]>
svn log --xml https://svn.example.com/repo \
  | grep author | sort -u \
  | sed -E 's/.*>(.+)<.*/\1 = \1 <\[email protected]>/'

One-Shot-Konvertierung mit git-svn

git svn clone \
    --stdlayout \
    --authors-file=authors.txt \
    https://svn.example.com/repo \
    repo.git

cd repo.git
git for-each-ref refs/remotes/origin/tags --format='%(refname:short)' \
  | while read ref; do
    tag="${ref#origin/tags/}"
    git tag "$tag" "$ref"
    git branch -d -r "$ref"
  done

Zu einem Git-Host pushen

git remote add origin https://gitlab.example.com/team/repo.git
git push -u origin --all
git push origin --tags

Migration verifizieren

  • Commit-Zahlen vergleichen.
  • Stichproben bei Autoren und Daten.
  • Tag- und Branch-Zahlen sollten ubereinstimmen.

Externals handhaben

  • Externen Code vendoren.
  • Git-Submodule verwenden.
  • Package Manager verwenden.

SVN ausser Betrieb nehmen

Nach Verifizierung den SVN-Repo einfrieren (read-only).