2010-07-23 11 views
4

Au travail, nous utilisons beaucoup de branches dans SVN et il y a des problèmes de fusion. J'ai entendu dire qu'une bonne idée est d'utiliser git mieux fusionner avec git-svn. J'essaie de jouer avec lui en utilisant msysgit, mais ce n'est pas aussi facile qu'il n'y paraît.Fusion facile dans svn en utilisant git-svn

Je sais que je peux vérifier l'ensemble du projet en utilisant git svn clone -s, mais il ne voit pas de branches (comme des branches git normales). Je trouve git-svn très difficile à utiliser comparé à git ou svn.

Pourriez-vous décrire étape par étape comment effectuer ce type de fusion?

Répondre

3

volonté git-svn vous donne une des branches pour chaque branches et étiquette dans SVN (sauf si vous utilisez un ruby script like svn2git)

L'idée est de toujours git-svn rebase/git-svn dcommit une branche SVN.
Par exemple, vous allez synchroniser une branche Git avec une branche SVN (git-svn rebase), et vous allez mettre à jour une branche SVN à partir des nouvelles validations dans la branche Git correspondante (git-svn dcommit).

Toutes les branches de Git locales, avec tous leurs fusions de fantaisie, doivent être locaux (toutes les branches/se fond dans Git n'aura aucun équivalent dans le repo SVN)

Comme la mise en garde dans le git-svn GOES (voir la question SO « git-svn merge 2 svn branches »):

par souci de simplicité et interopérer avec un système moins capable (SVN), il est recommandé que tous les git svn utilisateurs clone, fetch et dcommit directement à partir du SVN s erver, et éviter toutes les opérations git clone/pull/merge/push entre les dépôts git et les branches.
La méthode recommandée pour l'échange de code entre les branches git et les utilisateurs est git format-patch et git am, ou simplement 'dcommit' vers le référentiel SVN.

L'exécution git merge ou git pull n'est PAS recommandée sur une succursale que vous envisagez d'acheter à dcommit à partir de.
Subversion ne représente pas les fusions de façon raisonnable ou utile; les utilisateurs de Subversion ne peuvent donc voir aucune fusion effectuée. En outre, si vous fusionnez ou tirez à partir d'une branche git qui est un miroir d'une branche SVN, dcommit peut commettre à la mauvaise branche.

Questions connexes