Préparer
La première étape de migration d'un projet utilisant SVN vers Git consiste à préparer l'ordinateur de la personne responsable de la migration. Durant cette phase, il vous faudra télécharger un script, installer un système de fichier sensible à la casse (si nécessaire), puis mapper les informations des auteurs de SVN vers Git.
Les étapes suivantes doivent être effectuées en local sur l'ordinateur de la personne responsable de la migration.
Télécharger le script de migration
Git dispose de la plupart des outils nécessaires à l'importation d'un dépôt SVN. Cependant, Atlassian a comblé quelques lacunes en créant un fichier JAR très pratique. Ce fichier fait partie intégrante du processus de migration. Veillez donc à télécharger svn-migration-scripts.jar
à partir de votre compte Atlassian Bitbucket. En principe, vous l'avez sauvegardé dans votre répertoire de base. Avertissement : pour la migration SVN, vous avez besoin d'un système sensible à la casse, qui ne fonctionne pas sur NTFS. Nous suggérons une utilisation sur une machine Linux.
Après l'avoir téléchargé, vérifiez les scripts pour vous assurer que vous disposez de Java Runtime Environment, de Git, de Subversion et de l'utilitaire git-svn. Ouvrez une invite de commande et exécutez la commande suivante :
java -jar ~/svn-migration-scripts.jar verify
Un message d'erreur s'affiche dans la console si vous ne disposez pas des programmes nécessaires à la migration. Installez tout logiciel manquant avant de poursuivre.
Ressource connexe
Comment déplacer un dépôt Git complet
DÉCOUVRIR LA SOLUTION
Découvrir Git avec Bitbucket Cloud
Si vous recevez un message vous avertissant que la version ne peut être définie, exécutez export LANG=C
(*nix) ou SET LANG=C
(Windows) et réessayez.
Si vous effectuez la migration sur un ordinateur exécutant OS X, vous verrez également apparaître l'avertissement suivant :
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.
Nous nous pencherons sur ce sujet dans la section suivante.
Monter une image disque sensible à la casse
La migration vers Git doit être effectuée avec un système de fichiers sensible à la casse pour éviter la corruption du dépôt. C'est un problème si vous effectuez la migration sur un ordinateur OS X, car le système de fichiers n'est pas sensible à la casse.
Si vous utilisez un autre système d'exploitation qu'OS X, il vous suffit de créer un répertoire sur votre machine locale, intitulé ~/GitMigration
. C'est à cet emplacement que vous devez effectuer la conversion. Ensuite, passez directement à la section suivante.
Si vous utilisez OS X, montez une image de disque sensible à la casse à l'aide du script create-disk-image
contenu dans svn-migration-scripts.jar
. Deux paramètres sont essentiels :
1. The size of the disk image to create in gigabytes. You can use any size you like, as long as it’s bigger than the SVN repository that you’re trying to migrate.
2. The name of the disk image. This guide uses GitMigration
for this value.
Par exemple, la commande suivante crée une image de disque de 5 Go nommée GitMigration
:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
Comme l'image disque a été montée dans votre répertoire de base, un répertoire nommé ~/GitMigration
devrait maintenant apparaître sur votre machine locale. Ce répertoire sert de système de fichiers virtuel sensible à la casse. Vous y stockerez le dépôt Git converti.
Extraire les informations de l'auteur
SVN enregistre uniquement le nom d'utilisateur de l'auteur de chaque révision. Git, en revanche, stocke le nom complet et l'adresse e-mail de l'auteur. Autrement dit, vous devez créer un fichier texte qui mappe les noms d'utilisateur SVN vers leur equivalent Git.
Exécutez les commandes suivantes pour générer automatiquement ce fichier texte :
cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt
Veillez à remplacer <svn_repo_uri>
par l'URI du dépôt SVN que vous souhaitez migrer. Par exemple, si votre dépôt est stocké sur https://svn.example.com
, exécutez la commande suivante :
java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt
Ceci crée un fichier texte nommé authors.txt qui contient le nom d'utilisateur de chaque auteur dans le référentiel SVN ainsi que le nom généré et l'adresse email. Ceci crée un fichier texte nommé authors.txt qui contient le nom d'utilisateur de chaque auteur dans le référentiel SVN ainsi que le nom généré et l'adresse email.
Ceci crée un fichier texte nommé authors.txt qui contient le nom d'utilisateur de chaque auteur dans le référentiel SVN ainsi que le nom généré et l'adresse email. Cela devrait ressembler à quelque chose comme :
j.doe = j.doe <j.doe@mycompany.com>
m.smith = m.smith <m.smith@mycompany.com>
Remplacez la portion à droite du signe égal par le nom complet et l'adresse email de l'utilisateur correspondant. Par exemple, vous pourriez changer les auteurs ci-dessus en :
j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>
Résumé
Maintenant que vous disposez de vos scripts de migration, l'image disque (OS X uniquement), et des informations sur les auteurs, vous êtes prêts à importer votre historique SVN dans un nouveau dépôt Git. La prochaine étape explique comment fonctionne cette conversion.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.