Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi migrer

SVN fonctionne. Mais son modèle centralisé, son branching lent et sa difficulté à intégrer avec le tooling moderne pousse la plupart des équipes vers Git.

Deux chemins de migration

  • git-svn - fait le pont entre les deux systèmes.
  • Conversion one-shot - exporter l'historique SVN vers Git.

Préparer

# 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]>/'

Conversion one-shot avec 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

Push vers un host Git

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

Vérifier la migration

  • Comparer les comptes de commits.
  • Vérifier les auteurs et dates sur des commits représentatifs.
  • Les comptes de tags et branches devraient correspondre.

Gérer les externals

  • Vendor le code external dans le repo.
  • Utiliser les submodules Git.
  • Utiliser les gestionnaires de paquets du langage.

Formation

Les sauts conceptuels les plus difficiles SVN-vers-Git : la staging area, l'historique distribué, fast-forward versus merge commits.

Décommissionner SVN

Après vérification, gelez le repo SVN (lecture seule).