Migrer un dépôt SVN vers un dépôt git avec conservation de l'historique :
aptitude install git-svn
Créer un fichier de correspondance entre les noms d'auteur / login svn et les noms d'auteurs git :
authors=$(svn log -q svn://login@monserveursvn.exemple/mondepot | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq)
for author in ${authors}; do
echo "${author} = ${author%@*} <${author}>";
done
Dans la partie gauche : le nom d'auteur SVN. Dans la partie droite, son équivalent git. Attention : l'équivalent git doit vraiment être de la forme « texte
git svn --authors-file=authors clonesvn://login@monserveursvn.exemple/mondepot dossier_destination
. Attention : la conversion prend beaucoup de temps : 45 minutes pour 12500 commits dans un dépôt svn contenant 120 fichiers qui représentent cumulativement 13700 lignes ;Dans les message de commit, supprimer les références au dépôt SVN ajoutées automatiquement par git-svn (je vais détruire le dépôt svn, donc inutile d'y faire référence) :
cd mondepot
git filter-branch --msg-filter '
sed -e "/git-svn-id:/d"
'
Créer le dépôt git distant (sur gitlab, gogs, etc.) et ajouter sa référence dans les paramètres du dépôt local :
cd mondepot
git remote add origin user@monservergit.exemple:mondepotgit
git push -u origin master
.