2010-06-23 5 views
5

J'ai beaucoup de projets et de codes préexistants dans quelques dépôts Subversion différents. J'ai l'intention de faire tremper mes orteils avec Git en faisant migrer quelques-uns des projets les plus faciles/qui seront bientôt multi-développeurs à Git. J'ai quelques questions:Migration de Subversion vers Git

  1. Si je commence avec une solution Git hébergé, est-il difficile de changer le serveur Git d'un projet (Dans Subversion, il vous suffit de modifier l'URL, etc)? Je ferais ceci pour se lever et courir et à l'aise avec Git avant installant et maintenant mon propre serveur localement. Quelles sont les étapes à suivre pour migrer mes données de Subversion vers Git? Vais-je devoir vérifier chaque révision de SVN, exporter, et commettre à Git pour obtenir l'histoire?

  2. Avez-vous déjà rencontré des problèmes?

Quelques raisons de ce changement: Nous faisons beaucoup de branches et la fusion, nous ajouterons quelques développeurs sur ces projets, nous aurons les développeurs pas toujours dans le bureau/sur le réseau/etc.

Répondre

6

1. il est en fait très facile de changer le serveur puisque vous cloner le dépôt entier sur votre ordinateur, vous venez de le pousser vers le nouveau serveur;

2. vous pouvez utiliser git-svn pour cloner le dépôt svn dans un nouveau dépôt git en préservant l'historique. Vous devez d'abord créer un fichier utilisateur qui mappe tous vos utilisateurs SVN à vos utilisateurs GIT. Créez un fichier sur votre bureau nommé 'users.txt'. Carte des utilisateurs en utilisant ce format:

username = Full Name <[email protected]>

Maintenant, exécutez les commandes suivantes:

git-svn init url.to.svn.repository --no-metadata
git config svn.authorsfile ~/Desktop/users.txt
git-svn fetch

La première commande initialise le répertoire comme un hybride git-svn et des points l'origine de votre dépôt svn. Le drapeau, --no-metadata, dit à git de laisser tous les détails svn derrière (pas le journal de commit). La commande suivante dit à git de remapper tous les utilisateurs svn aux utilisateurs git. La dernière commande fait la récupération.

+1

+1 Ceci est très utile et détaillé! Merci beaucoup. – ashurexm

2

tout d'abord, je recommande livre Pro Git

  1. Il est pas difficile du tout. Vous pouvez faire quelque chose comme

    git ajouter à distance

et vous pouvez avoir plus de télécommandes en même temps et chercher des changements de vos collègues de travail à des branches différentes avant de les fusionner et appuyez sur le serveur.

  1. Je n'ai pas l'expérience avec plus de branches dans svn, mais pour moi était assez pour faire quelque chose comme

    git clone svn svn-repo

0

1 C'est trivial. Git est distribué. 2) Il y a beaucoup de guides là-bas si vous google, mais la séquence de base est git svn clone, puis convertissez toutes les branches svn tag en tags git réels, supprimez les branches tag, puis ajoutez une git remote et appuyez sur.

3) Rien de majeur.

Je recommande vivement d'aller avec GitHub pour votre hôte. Ils ont des repos privés qui ne sont pas chers et leur site est superbe.