Préparez-vous à migrer

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.

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.

Migration Git : monter l'image du disque

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. La taille de l'image disque à créer (en gigaoctets). Vous pouvez utiliser la taille que vous souhaitez, tant que cette taille est supérieure à celle du dépôt SVN que vous essayez de migrer.
  2. Le nom de l'image de disque. Dans ce guide, nous l'appellerons GitMigration.

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.

Migration Git : mapper des noms d'utilisateur SVN à des noms d'utilisateur Git

Exécutez les commandes suivantes pour générer automatiquement ce fichier texte :

cd ~/GitMigration java -jar ~/svn-migration-scripts.jar authors  > authors.txt

Veillez à remplacer SET LANG=C 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 :

auteurs java -jar ~/svn-migration-scripts.jar 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  m.smith = m.smith 

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  m.smith = Mary Smith 

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.

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrer maintenant