Conversion svn en git, comment obtenir les branches ne pas être juste à distance dans le repo svn?
Je suis assez nouveau à git et je suis en train de déplacer un dépôt svn à git. J'ai suivi le guide ci-dessous, alors maintenant, j'ai un repo git sur mon serveur
http://pauldowman.com/2008/07/26/how-to-convert-from-subversion-to-git/
Donc, si je fais "git branch" git réponses "* master" et si je fais "git branch-r" - je obtenir une liste de toutes les branches dans le dépôt svn.
Mon dernier svn-archivages ont été dans l'une des branches, mais quand j'ai fait le "git svn clone"-trucs de ma s'engage dans cette branche (ils n'ont pas été fusionnés dans le tronc encore) sont visibles dans mon (git) branche master. Ce qui me manque ici?
Aussi, si j'ai sur ma machine de développement ne "git clone" je obtenir les fichiers d'accord. Mais si je fais "git branch-r" je ne peux voir que la branche master et de ne pas les branches distantes".
Depuis que nous nous débarassons de la svn-pensions de tout le monde, je voudrais avoir toutes les branches du svn à git-repo afin qu'ils puissent être accessibles à partir du développeur clients.
Encore une fois, je ne suis pas un total git débutant mais pas loin de là. Donc, si il ya quelque chose de fondamental qui me manque ici s'il vous plaît dites-moi.
Mise à jour
Après avoir fait quelques RTFM (homme git-svn) j'ai résolu le premier problème de la direction des trucs présents dans la branche master
reset --hard télécommandes/trunk
Maintenant le tronc et la branche master sont les mêmes. Maintenant, la prochaine étape est de comprendre comment obtenir les branches de l'élaboration des clients.
Mise à jour 2
J'ai eu de travail en combinant l'url ci-dessus et l'url que Scott a souligné. Ainsi, depuis le début.
J'ai d'abord créé un dépôt vide sur le serveur, ils sont conservés dans /usr/local/git-repos sur notre serveur:
server> cd /usr/local/git-repos
server> mkdir my_project.git
server> cd my_project.git
server> git init
Puis j'ai cloné le svn-référentiel pour mon dev-machine (à noter que sur notre serveur svn les "branches" dir est appelée "branche" witout le 's'):
dev> git svn clone http://<svn.server>/my_project --no-metadata -A authors.txt -t tags -b branch -T trunk my_project
Puis un peu de ménage pour obtenir les étiquettes et les branches dans l'ordre:
dev> cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
dev> rm -Rf .git/refs/remotes/tags
dev> cp -Rf .git/refs/remotes/* .git/refs/heads/
dev> rm -Rf .git/refs/remotes
Maintenant ajouter mon serveur comme un dépôt distant:
dev> git remote add origin jorgen@<our_server>:/usr/local/git-repos/my_project.git
Enfin, poussez toutes les branches et de tags au serveur:
dev> git push origin --all
Ouf, maintenant, là vous l'avez, maintenant je peux me débarrasser de cette svn-repo.
Mise à jour 3
La caisse ebneters post ci-dessous pour un moyen plus facile de le faire...
source d'informationauteur Jörgen Lundberg
Vous devez vous connecter pour publier un commentaire.
Il est assez une explication détaillée sur la façon de faire une très bonne SVN import qui explique comment convertir les branches correctement ici:
https://git-scm.com/book/en/v1/Git-and-Other-Systems-Migrating-to-Git
La réponse c'est:
Espère que c'est utile.
Une autre bonne façon de le faire, juste pour le record, est d'utiliser svn2git — je suis dans le milieu de la conversion de plusieurs plutôt grand référentiels et il a été une aubaine. Il automatise toutes les étapes nécessaires pour prendre soin de branches et de les convertir svn balises de vraies étiquettes git.
Scott solution n'a pas fonctionné pour moi. Je soupçonne que quelque chose peut-être modifié dans une version récente de git-svn depuis qu'il a posté (et puisque le liés livre a été écrit), car il me semble agressive des déchets-collecte dès que le clone est complète. Mais c'est juste une supposition quant à pourquoi il ne fonctionne pas. J'utilise git 1.6.5.6.
Plus précisément, mon .git/refs/remotes répertoire était complètement vide à l'exception des balises répertoire, qui était également vide. Donc je ne peux rien copier pour le rendre droit.
Après quelques farfouillé, j'ai été en mesure de résoudre ce problème en vérifiant le fichier .git/paniers-refs et de la recherche et de remplacement sur les éléments suivants (dans cet ordre):
Si votre éditeur vim, vous pouvez le faire avec ces deux commandes:
svn2git 1.3.1 aussi de ne pas produire un résultat utilisable pour moi (n'importe pas s'engage après un certain point il y a plusieurs mois, et les branches ont tous le même commits). Pour l'instant j'ai renoncé à svn2git, et ont eu le plus de succès à l'aide de git-svn combiné avec ce qui précède.
Un vœu pieux: ça serait bien si git-svn simplement ajouté une commande comme "abandonner" ou "migration" qui permettrait d'automatiser ce processus dans l'avenir un moyen.
J'ai migré 2 svn repos git (git version 1.7.0.4) à la suite de Scott recette, un petit et un grand. Le plus petit s'est comporté comme décrit par Scott dans le chapitre de livre. La plus grande requis la solution de David.
Une autre chose est que
ne pas pousser les balises et à la place j'ai eu pour ce faire:
Cela peut ne pas être évident à partir de l'indicateur --toutes et à partir du chapitre de livre et j'ai réalisé
après, j'ai supprimé le local git svn repo.