2010-07-06 5 views
5

J'ai un référentiel svn (sans structure TLB si c'est important) que je veux utiliser avec git. Je peux faire un clone git-svn, travailler sur mes changements dans le repo git et retourner au svn repo quand j'ai fini. C'est clair jusqu'à ce point.Utiliser git et svn avec plusieurs développeurs

Je ne sais pas comment étendre ce modèle de workflow à plusieurs développeurs. J'ai besoin de mon équipe de développement pour pouvoir travailler sur un seul repo de git (celui cloné du svn repo) qui devrait se comporter comme un repo de git normal pour chacun d'entre nous. À un certain point, tout développeur doit être en mesure de revenir au svn repo. Est-ce possible? Merci.

Répondre

1

Nous avons eu le même problème et nous n'avons pas trouvé un moyen de le faire, nous passons donc au git complet. Les choses marchent bien si un seul repo communique avec svn, mais sinon cela devient vraiment désordonné. Qu'est-ce que happend est la branche git-svn a sa propre vie

Vous pouvez juste essayer
- créer Repo GIT1 et GIT2 de svn.
- faire un changement dans git 1 et dcommit svn
- tirer int GIT2, faire un rebasage svn git et de voir ce qui se passe ...

lorsque vous essayez de le tirer dans GIT2, vous devez sorte de créer une nouvelle branche qui commence à partir de la SVN, mais il ne suit pas. Donc git2 a essentiellement 2 branches le svn un et le git1. Donc, avant de pouvoir pousser quelque chose de git2 dans svn, vous devez fusionner la branche git1 avec svn one (même si elles sont identiques). (je peux me tromper parce que je l'ai fait il y a un certain temps et peut-être il y a une solution)

Quoi qu'il en soit, je devais le faire deux ou trois fois parce que quand nous sommes passés de « git-svn » à « git » , nous avons créé le git-repository central avant que tout le monde ne finisse par valider sa propre chose à svn. Je devais ensuite choisir de nouvelles choses de svn pour les remettre dans le nouveau repo git et c'était vraiment un gros bazar.

Utilisez donc seulement git, ou ne disposez que d'un seul repo connecté à svn.

+0

C'est aussi l'approche la plus sans problème dans mon expérience. –

1

Je regarde cela aussi, mon recommande ainsi est

  • utilisation maître pour la synchronisation avec dépôt svn et les noms de branche spéciale pour suivre les autres branches svn, comme branche Walko à svn, puis dans git, il walko-svn
  • utilisez d'autres noms pour synchroniser avec le dépôt git.

alt text http://larrycai.files.wordpress.com/2013/02/image2.png

Ensuite, le chemin de fonctionnement sont

  • tous les concepteurs synchroniser du référentiel svn par clone git-svn ..., en utilisant maître et branche svn nom
  • tous les concepteurs a également synchroniser au dépôt git, mais garder au-dessus de nom de la branche pour svn
  • tous les concepteurs utilisent la plupart du temps git pour collaborer au développement, comme branche de sujet
  • lorsque la branche de sujet semble bonne, chaque concepteur peut rebasculer à la branche principale, ce concepteur doit s'engager dans svn repository et après (obtenir git-svn-id), ils sont également repoussés vers git-repository. (Ce travail peut être fait automatiquement si Stecher svn)
  • dépôt puis git est synchronisation toujours avec repo svn sur la branche principale

Résumé

  • utilisation git à collaborer sur la branche non-svn (comme maître)
  • rebase retour au dépôt svn de branche non-svn
  • toujours garder la synchronisation git (maître) avec repo svn

voir mon blog avec des photos http://larrycaiyu.com/blog/2010/07/10/svn-git-integration-1/

Questions connexes