Préparez-vous à migrer

Prepare

The first step to migrating a project from SVN to Git-based version control is to prepare the migration lead’s local machine. In this phase, you’ll download a convenient utility script, mount a case-sensitive filesystem (if necessary), and map author information from SVN to Git.

All of the the following steps should be performed on the migration lead’s local machine.

Download the migration script

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

This will display an error message in the console if you don’t have the necessary programs for the migration process. Make sure that any missing software is installed before moving on.

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.

If you’re performing the migration on a computer running OS X, you’ll also see the following warning:

You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.

We’ll address this in the next section.

Mount a case-sensitive disk image

Migrating to Git should be done on a case-sensitive file system to avoid corrupting the repository. This is a problem if you’re performing the migration on an OS X computer, as the OS X filesystem isn’t case-sensitive.

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.

Git migration: mount disk image

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. 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.

Extract the author information

SVN only records the username of the author for each revision. Git, however, stores the full name and email address of the author. This means that you need to create a text file that maps SVN usernames to their Git counterparts.

Git migration: Map SVN usernames to Git usernames

Run the following commands to automatically generate this text file:

cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn-repo> > 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 :

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>

Change the portion to the right of the equal sign to the full name and email address of the corresponding user. For example, you might change the above authors to:

j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>

Summary

Now that you have your migration scripts, disk image (OS X only), and author information, you’re ready to import your SVN history into a new Git repository. The next phase explains how this conversion works.

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant