Recherche…


Migrer de SVN vers Git en utilisant l'utilitaire de conversion Atlassian

Téléchargez l'utilitaire de conversion Atlassian ici . Cet utilitaire nécessite Java, donc assurez-vous que JRE Java Runtime Environment est installé sur la machine sur laquelle vous souhaitez effectuer la conversion.

Utilisez la commande java -jar svn-migration-scripts.jar verify pour vérifier si votre java -jar svn-migration-scripts.jar verify manque l'un des programmes nécessaires pour terminer la conversion. Plus précisément, cette commande vérifie les utilitaires Git, subversion et git-svn . Il vérifie également que vous effectuez la migration sur un système de fichiers sensible à la casse. La migration vers Git doit être effectuée sur un système de fichiers sensible à la casse pour éviter de corrompre le référentiel.

Ensuite, vous devez générer un fichier auteurs. Subversion suit les modifications par le nom d'utilisateur du committer uniquement. Git utilise cependant deux informations pour distinguer un utilisateur: un vrai nom et une adresse électronique. La commande suivante générera un fichier texte mappant les noms d'utilisateur subversion à leurs équivalents Git:

java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt

<svn-repo> est l'URL du dépôt de subversion que vous souhaitez convertir. Après avoir exécuté cette commande, les informations d'identification des contributeurs seront mappées dans authors.txt . Les adresses e-mail seront de la forme <username>@mycompany.com . Dans le fichier auteurs, vous devrez modifier manuellement le nom par défaut de chaque personne (qui est devenu son nom d'utilisateur par défaut) en leur donnant le nom réel. Assurez-vous également de vérifier l'exactitude de toutes les adresses électroniques avant de continuer.

La commande suivante clone un svn repo en tant que Git:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>

<svn-repo> est la même URL de référentiel utilisée ci-dessus et <git-repo-name> est le nom du dossier dans le répertoire actuel dans lequel cloner le référentiel. Il existe quelques considérations avant d'utiliser cette commande:

  • Le --stdlayout drapeau de Git ci - dessus indique que vous utilisez une mise en page standard avec le trunk , les branches et tags des dossiers. Les référentiels Subversion avec des mises en page non standard nécessitent que vous spécifiiez les emplacements du dossier de la ligne trunk , de tous les dossiers de branch / et de tous les dossiers de tags . Cela peut se faire en suivant l'exemple suivant: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Cette commande peut prendre plusieurs heures, selon la taille de votre dépôt.
  • Pour réduire le temps de conversion des référentiels volumineux, la conversion peut être exécutée directement sur le serveur hébergeant le référentiel Subversion afin d'éliminer la surcharge du réseau.

git svn clone importe les branches subversion (et le tronc) en tant que branches distantes, y compris les balises de subversion (branches distantes préfixées par des tags/ ). Pour les convertir en branches et balises réelles, exécutez les commandes suivantes sur un ordinateur Linux dans l'ordre dans lequel elles sont fournies. Après leur exécution, git branch -a devrait afficher les noms de branche corrects, et git tag -l devrait afficher les balises du référentiel.

git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done

La conversion de svn à Git est maintenant terminée! Il suffit de push votre repo local vers un serveur et vous pouvez continuer à contribuer en utilisant Git ainsi que d' avoir une histoire de version entièrement préservée de svn.

SubGit

SubGit peut être utilisé pour effectuer une importation unique d'un référentiel SVN vers git.

$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git

Migrer de SVN à Git en utilisant svn2git

svn2git est un wrapper Ruby autour du support SVN natif de git via git-svn .

Exemples

Pour migrer un référentiel svn avec la disposition standard (par exemple, les branches, les balises et le tronc au niveau racine du référentiel):

$ svn2git http://svn.example.com/path/to/repo

Pour migrer un référentiel svn qui n'est pas dans une présentation standard:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

Si vous ne souhaitez pas migrer (ou ne pas avoir) de branches, de balises ou de tronc, vous pouvez utiliser les options --notrunk , --nobranches et --notags .

Par exemple, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches ne migrera que l'historique des troncs.

Pour réduire l'espace requis par votre nouveau référentiel, vous souhaiterez peut-être exclure les répertoires ou fichiers que vous avez ajoutés une fois que vous n'auriez pas dû (par exemple, répertoire de construction ou archives):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

Optimisation post-migration

Si vous avez déjà quelques milliers de commits (ou plus) dans votre référentiel git nouvellement créé, vous souhaiterez peut-être réduire l'espace utilisé avant de transférer votre référentiel sur une télécommande. Cela peut être fait en utilisant la commande suivante:

$ git gc --aggressive

Remarque: la commande précédente peut durer plusieurs heures sur de grands référentiels (des dizaines de milliers de commits et / ou des centaines de mégaoctets d’historique).

Migration de Team Foundation Version Control (TFVC) vers Git

Vous pouvez migrer du contrôle de version Team Foundation vers GIT en utilisant un outil open source appelé Git-TF. La migration transférera également votre historique existant en convertissant les checkins tfs en git commits.

Pour mettre votre solution dans Git en utilisant Git-TF, suivez ces étapes:

Télécharger Git-TF

Vous pouvez télécharger (et installer) Git-TF à partir de Codeplex: Git-TF @ Codeplex

Cloner votre solution TFVC

Lancer powershell (win) et tapez la commande

git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep

Le paramètre --deep est le mot-clé à noter car il indique à Git-Tf de copier votre historique de vérification. Vous avez maintenant un référentiel git local dans le dossier à partir duquel vous avez appelé votre commande cloe.

Nettoyer

  • Ajoutez un fichier .gitignore. Si vous utilisez Visual Studio, l'éditeur peut le faire pour vous, sinon vous pouvez le faire manuellement en téléchargeant un fichier complet à partir de github / gitignore .
  • Liaisons de contrôle de source RemoveTFS à partir de la solution (supprimez tous les fichiers * .vssscc). Vous pouvez également modifier votre fichier de solution en supprimant le GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection

Commit & Push

Terminez votre conversion en validant et en transférant votre référentiel local sur votre télécommande.

git add .
git commit -a -m "Coverted solution source control from TFVC to Git"

git remote add origin https://my.remote/project/repo.git

git push origin master

Migration de Mercurial à Git

On peut utiliser les méthodes suivantes pour importer un Repo Mercurial dans Git :

  1. En utilisant l' exportation rapide :
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
  1. Utiliser Hg-Git : Une réponse très détaillée ici: https://stackoverflow.com/a/31827990/5283213

  2. Utilisation de l'importateur de GitHub : Suivez les instructions (détaillées) sur GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow