Importation des utilisateurs SVN

Retour à la page précédente

L’import n’est pas parfait ; et comme cela prend autant de temps, autant le faire bien. Le premier problème est l’information d’auteur. Dans Subversion, chaque personne qui valide dispose d’un compte sur le système qui est enregistré dans l’information de validation.
Les exemples de la section précédente montrent schacon à certains endroits, tels que la sortie de blame ou de git svn log. Si vous voulez transposer ces données vers des données d’auteur au format Git, vous avez besoin d’une correspondance entre les utilisateurs Subversion et les auteurs Git. Créez un fichier appelé users.txt contenant cette équivalence dans le format suivant :

schacon = Scott Chacon <schacon@geemail.com>
selse = Someo Nelse <selse@geemail.com>

Pour récupérer la liste des noms d’auteurs utilisés par SVN, vous pouvez utiliser la ligne suivante :

$ svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt

Cela génère une sortie au format XML — vous pouvez visualiser les auteurs, créer une liste unique puis éliminer l’XML. Évidemment, cette ligne ne fonctionne que sur une machine disposant des commandes grepsort et perl. Ensuite, redirigez votre sortie dans votre fichier users.txt pour pouvoir y ajouter en correspondance les données équivalentes Git.

Vous pouvez alors fournir ce fichier à git svn pour l’aider à convertir les données d’auteur plus précisément. Vous pouvez aussi indiquer à git svn de ne pas inclure les méta-données que Subversion importe habituellement en passant l’option --no-metadata à la commande clone ou init. Au final, votre commande d’import ressemble à ceci :

$ git svn clone http://mon-projet.googlecode.com/svn/ --authors-file=users.txt --no-metadata -s my_project

Retour à la page précédente