Synchronize

Synchronize

It’s very easy to synchronize your Git repository with new commits in the original SVN repository. This makes for a comfortable transition period in the migration process where you can continue to use your existing SVN workflow, but begin to experiment with Git.

It’s possible to synchronize in both directions. However, we recommend a one-way sync from SVN to Git. During your transition period, you should only commit to your SVN repository, not your Git repo. Once you’re confident that your team is ready to make the switch, you can complete the migration process and begin to commit changes with Git instead of SVN.

Git migration: we recommend a one-way sync from SVN to Git.

Entre temps, vous devriez continuer à effectuer des commits vers votre référentiel SVN et à synchroniser votre référentiel Git lorsque c'est nécessaire.  Le processus est similaire à la phase de conversion, mais du fait que vous n'avez affaire qu'à des modifications incrémentales, cela devrait être bien plus efficace. Le processus est similaire à la phase de conversion, mais du fait que vous n'avez affaire qu'à des modifications incrémentales, cela devrait être bien plus efficace.

Update the authors file

Le fichier authors.txt que nous avons utilisé pour faire correspondre les noms d'utilisateurs SVN aux noms et adresses email complets est essentiel dans le processus de synchronisation. Le fichier authors.txt que nous avons utilisé pour faire correspondre les noms d'utilisateurs SVN aux noms et adresses email complets est essentiel dans le processus de synchronisation. Le fichier authors.txt que nous avons utilisé pour faire correspondre les noms d'utilisateurs SVN aux noms et adresses email complets est essentiel dans le processus de synchronisation. S'il a été déplacé de l'emplacement ~/GitMigration/authors.txt que nous avons utilisé jusque là, vous devez mettre à jour son emplacement avec : S'il a été déplacé de l'emplacement ~/GitMigration/authors.txt que nous avons utilisé jusque là, vous devez mettre à jour son emplacement avec :

git config svn.authorsfile <path-to-authors-file>

Si de nouveaux développeurs sont attribués au référentiel SVN depuis la dernière sync (ou le clone initial), le fichier auteurs doit être mis à jour en conséquence. Vous pouvez effectuer ceci en ajoutant manuellement de nouveaux utilisateurs dans authors.tx, ou vous pouvez utiliser l'option --authors-prog, comme nous le verrons dans la prochaine section. Vous pouvez effectuer ceci en ajoutant manuellement de nouveaux utilisateurs dans authors.tx, ou vous pouvez utiliser l'option --authors-prog, comme nous le verrons dans la prochaine section. Vous pouvez effectuer ceci en ajoutant manuellement de nouveaux utilisateurs dans authors.tx, ou vous pouvez utiliser l'option --authors-prog, comme nous le verrons dans la prochaine section. Vous pouvez effectuer ceci en ajoutant manuellement de nouveaux utilisateurs dans authors.tx, ou vous pouvez utiliser l'option --authors-prog, comme nous le verrons dans la prochaine section. Vous pouvez effectuer ceci en ajoutant manuellement de nouveaux utilisateurs dans authors.tx, ou vous pouvez utiliser l'option --authors-prog, comme nous le verrons dans la prochaine section.

Pour des synchronisations isolées, il est souvent plus facile d'éditer directement le fichier auteurs. Cependant l'option ---authors-prog est préférable si vous effectuez des synchronisations non supervisées (c'est-à-dire des tâches planifiées). Pour des synchronisations isolées, il est souvent plus facile d'éditer directement le fichier auteurs. Cependant l'option ---authors-prog est préférable si vous effectuez des synchronisations non supervisées (c'est-à-dire des tâches planifiées). Pour des synchronisations isolées, il est souvent plus facile d'éditer directement le fichier auteurs. Cependant l'option ---authors-prog est préférable si vous effectuez des synchronisations non supervisées (c'est-à-dire des tâches planifiées).

Automatically generating Git authors

If your authors file doesn’t need to be updated, you can skip to the next section.

La commande git svn inclut une option intitulée --authors-prog, qui pointe sur un script qui transforme automatiquement les noms d'utilisateur SVN en auteurs Git. La commande git svn inclut une option intitulée --authors-prog, qui pointe sur un script qui transforme automatiquement les noms d'utilisateur SVN en auteurs Git. La commande git svn inclut une option intitulée --authors-prog, qui pointe sur un script qui transforme automatiquement les noms d'utilisateur SVN en auteurs Git. La commande git svn inclut une option intitulée --authors-prog, qui pointe sur un script qui transforme automatiquement les noms d'utilisateur SVN en auteurs Git.La commande git svn inclut une option intitulée --authors-prog, qui pointe sur un script qui transforme automatiquement les noms d'utilisateur SVN en auteurs Git. Vous aurez besoin de configurer ce script pour qu'il accepte le nom d'utilisateur SVN comme son argument unique et retourner une ligne unique sous la forme Nom <email> (exactement comme le côté droit du fichier d'auteurs existant). Vous aurez besoin de configurer ce script pour qu'il accepte le nom d'utilisateur SVN comme son argument unique et retourner une ligne unique sous la forme Nom <email> (exactement comme le côté droit du fichier d'auteurs existant). Vous aurez besoin de configurer ce script pour qu'il accepte le nom d'utilisateur SVN comme son argument unique et retourner une ligne unique sous la forme Nom <email> (exactement comme le côté droit du fichier d'auteurs existant). Cette option peut être très utile si vous avez besoin d'ajouter périodiquement de nouveaux développeurs à votre projet.

Si vous voulez utiliser l'option --authors-prog, créez un fichier nommé authors.sh Si vous voulez utiliser l'option --authors-prog, créez un fichier nommé authors.sh Si vous voulez utiliser l'option --authors-prog, créez un fichier nommé authors.sh Si vous voulez utiliser l'option --authors-prog, créez un fichier nommé authors.shSi vous voulez utiliser l'option --authors-prog, créez un fichier nommé authors.shoption dans ~/GitMigration. option dans ~/GitMigration. option dans ~/GitMigration. Ajoutez la ligne suivante à authors.sh pour retourner un nom et un email Git génériques pour tout auteur qui n'a pas été trouvé dans authors.txt. Ajoutez la ligne suivante à authors.sh pour retourner un nom et un email Git génériques pour tout auteur qui n'a pas été trouvé dans authors.txt. Ajoutez la ligne suivante à authors.sh pour retourner un nom et un email Git génériques pour tout auteur qui n'a pas été trouvé dans authors.txt. Ajoutez la ligne suivante à authors.sh pour retourner un nom et un email Git génériques pour tout auteur qui n'a pas été trouvé dans authors.txt.Ajoutez la ligne suivante à authors.sh pour retourner un nom et un email Git génériques pour tout auteur qui n'a pas été trouvé dans authors.txt.

echo "$1 <$1@example.com>"

Again, this will only generate a dummy name and email based on the SVN username, so feel free to alter it if you can provide a more meaningful mapping.

Fetch the new SVN commits

À la différence de SVN, Git établit une distinction entre le fait de télécharger des commits en amont et de les intégrer dans le projet. À la différence de SVN, Git établit une distinction entre le fait de télécharger des commits en amont et de les intégrer dans le projet. À la différence de SVN, Git établit une distinction entre le fait de télécharger des commits en amont et de les intégrer dans le projet. A la différence de SVN, Git établit une distinction entre le fait de télécharger des commits en amont et de les intégrer dans le projet. À la différence de SVN, Git établit une distinction entre le fait de télécharger des commits en amont et de les intégrer dans le projet. La première manipulation est appelée «aller chercher» ou fetching, tandis que la dernière peut être accomplie à l'aide de la fusion ou d'un changement de base. Dans le répertoire ~/GitMigration, exécutez la commande suivante pour aller chercher tous les nouveaux commits depuis le référentiel SVN original. Dans le répertoire ~/GitMigration, exécutez la commande suivante pour aller chercher tous les nouveaux commits depuis le référentiel SVN original. Dans le répertoire ~/GitMigration, exécutez la commande suivante pour aller chercher tous les nouveaux commits depuis le référentiel SVN original.

git svn fetch

Ceci est similaire à la commande git svn clone de la phase précédente en ce qu'elle ne fait que mettre à jour les branches à distance du référentiel Git. Les branches locales ne reflètent aucune des mises à jour pour l'instant. Ceci est similaire à la commande git svn clone de la phase précédente en ce qu'elle ne fait que mettre à jour les branches à distance du référentiel Git. Les branches locales ne reflètent aucune des mises à jour pour l'instant. Ceci est similaire à la commande git svn clone de la phase précédente en ce qu'elle ne fait que mettre à jour les branches à distance du référentiel Git. Les branches locales ne reflètent aucune des mises à jour pour l'instant. Vos branches à distance, d'autre part, devraient correspondre exactement à l'historique du référentiel de SN.

Si vous utilisez l'option --authors-prog, vous devez l'inclure dans la commande ci-dessus de la manière suivante : Si vous utilisez l'option --authors-prog, vous devez l'inclure dans la commande ci-dessus de la manière suivante : Si vous utilisez l'option --authors-prog, vous devez l'inclure dans la commande ci-dessus de la manière suivante :

git svn fetch --authors-prog=authors.sh

Synchronize with the fetched commits

To apply the downloaded commits to the repository, run the following command:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Ceci effectuera un changement de base des commits récupérés sur vos branches locales afin qu'elles correspondent à leurs contreparties à distance. Vous devriez maintenant être capables de voir les nouveaux commits dans votre journal git. Vous devriez maintenant être capables de voir les nouveaux commits dans votre journal git. Vous devriez maintenant être capables de voir les nouveaux commits dans votre journal git.

Clean up the Git repo (again)

C'est également une bonne idée d'exécuter le script git-clean à nouveau pour éliminer toutes les balises ou branches obsolètes qui ont été supprimées du référentiel SVN original depuis la dernière synchronisation. C'est également une bonne idée d'exécuter le script git-clean à nouveau pour éliminer toutes les étiquettes ou branches obsolètes qui ont été supprimées du référentiel SVN original depuis la dernière synchronisation. C'est également une bonne idée d'exécuter le script git-clean à nouveau pour éliminer toutes les étiquettes ou branches obsolètes qui ont été supprimées du référentiel SVN original depuis la dernière synchronisation.

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git
--force

Your local Git repository should now be synchronized with your SVN repository.

Summary

During this transition period, it’s very important that your developers only commit to the original SVN repository. The only time the Git repository should be updated is via the synchronization process discussed above. This is much easier than managing a two-way synchronization workflow, but it still allows you to start integrating Git into your build process.

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant