Comment migrer de Subversion vers Git ?

Ce module va permettre de migrer vos projets de Subversion vers Git.

NB : les commandes utilisées dans le paragraphe suivant seront selon les systèmes :
git-svn ou git svn.
Sous mac os, git-svn ne fonctionne pas par contre git svn oui.

Pour migrer vers Git avec tout l'historique des changements de votre projet, créer un répertoire de travail abritant les référentiels git en local si ce n'est pas déjà fait et se positionner dedans.

  1. Récupérer votre projet en tant que projet git sur votre poste de travail :
    git-svn clone https://subversion.renater.fr/authscm/<nom utilisateur unix>/svn/nom_projet nom_projet -T trunk -b branches -t tags
  2. Un répertoire associé à votre projet est créé dans votre répertoire de travail.
  3. Aller dans le répertoire du projet
  4. Les fichiers ignorés en svn ne le sont plus par défaut dans votre dépôt local Git !
    Pour ignorer ces fichiers avec Git, exécuter la commande suivante :
     git-svn show-ignore > .gitignore 
  5. Vérifier la liste des branches migrées :
    git branch -r

    Toutes les branches y compris les vieilles sont visibles en tant que branches Git de même que les étiquettes.
    Si vous voulez conserver toutes les branches à distance listées, vous devez créer manuellement chaque branche locale. Si vous ne le faites pas, les branches ne seront pas clonées dans l'étape finale.

  6. Création des branches locales que vous souhaitez conserver pour git :
    git checkout -b branch_a_conserver origin/branch_a_conserver

    Il faut le faire pour toutes les branches que vous souhaitez prendre en compte sinon seul “trunk” sera valide pour Git.

  7. Cette opération est à réaliser également pour toutes les étiquettes.
    Les étiquettes sont importées en tant que branches, il faut donc les créer en tant que branche puis les déclarer en tant qu'étiquettes :
    git checkout -b tag_etiquette_a_conserver origin/tags/etiquette_a_conserver
    git tag tags/etiquette_a_conserver tags/tag_etiquette_a_conserver
  8. Se repositionner sur la branche principale par défaut “master” :
    git checkout master
  9. Supprimer chaque branche associée aux étiquettes créées pour la migration vers git des étiquettes :
    git branch -D tag_etiquette_a_conserver
  10. Vérifier ce qui est pris en compte au niveau de git :
    Pour les branches : git branch
    Pour les étiquettes : git tag


Pré-requis sur Sourcesup : Avoir une paire de clés asymétriques

  • Pour générer une paire de clés publique/privée à partir de votre poste de travail, utiliser la commande suivante :
    ssh-keygen

    Vous allez voir plusieurs messages s'afficher et quelques questions vont vous être posées. Le client génère une paire de clés, il doit ensuite sauvegarder ces clés dans des fichiers (un pour la clé publique, un pour la clé privée), conserver les valeurs proposées par défaut.

  • Ensuite, on vous demande un mot de passe, il servira à chiffrer la clé privée :
    • Soit vous validez directement sans rien écrire, et la clé ne sera pas chiffrée sur votre machine
    • Soit vous tapez un mot de passe de votre choix, et la clé sera chiffrée.

Tout le monde ne met pas un mot de passe, tout dépend du risque d'utilisation de votre machine par d'autres personnes, et donc du risque de compromission de votre clé privée.

Démarche :

  1. Se connecter sur Sourcesup et se positionner sur l'onglet lié à la gestion du code source “Code source”
  2. Cliquer sur le lien “Administration”
  3. Changer le type de dépôt : passer de Svn à Git et mettre à jour
  4. Le dépôt Git est créé, vous pouvez voir les url du dépôt dans l'onglet “Code source”
  5. Cliquer sur le lien “Mon compte” (en haut à droite de la page)
  6. Déposer votre clé publique en bas de la page à l'endroit indiqué sur le formulaire si ce n'est pas déjà fait.
  7. La création du dépôt Git
  1. Retourner sur votre dépôt git local dans le dossier associé à votre projet
  2. Valider vos changements sur le dépôt de référence Git de Sourcesup pour votre projet, sinon les étiquettes ne sont pas prises en compte :
    git push --all git+ssh://<nom utilisateur unix>@git.renater.fr:2222/scmrepos/git/nom_projet/nom_projet.git
    git push --tags git+ssh://<nom utilisateur unix>@git.renater.fr:2222/scmrepos/git/nom_projet/nom_projet.git
  3. Vous pouvez cloner ce projet Git dans un nouveau dossier, pour avoir un projet git propre en local et supprimer ensuite l'ancien dossier.




Voilà vous disposez du projet Git en local et d'une version sur le dépôt de référence offert par SourceSup.

Site de référence : http://git.or.cz/course/svn.html


Cette page officielle du site de Git explique comment utiliser Git lorsqu’on est habitué à utiliser subversion, en mettant en parallèle les instructions Git et leur équivalent Subversion. C’est donc à lire absolument pour bien démarrer sous Git lorsqu’on est habitué à Subversion.

  • sourcesup/git/comment_migrer_de_subversion_vers_git.txt
  • Dernière modification : 2023/12/20 16:54
  • de emmanuel.forestier@renater.fr