Après avoir cloné un repository SVN en utilisant git-svn avec l’option -s
( git svn clone http://server/repo -s
), comment créer une twig ou un tag et avoir poussé vers le répertoire de twig / tag approprié du référentiel quand vous vous dcommit
?
Par exemple; si je devais utiliser git pour créer une twig foobar
localement ( git checkout -b foobar
) comment faire pour que git-svn crée la twig sur le serveur ( http://server/repo/twigs/foobar
)?
J’utilise Git 1.5.5.6.
Notez s’il vous plaît:
La méthode acceptée ci – dessous ne fonctionne pas avec Git 1.5.5.6 car il n’existe pas de méthode de git svn branch
. Je suis toujours à la recherche d’une solution qui ne nécessite pas de travailler directement avec svn.
Vous pouvez lire tous les détails dans ce tutoriel , mais l’essentiel est le suivant:
$ git svn branch -m "Topic branch" my_topic # Create SVN branch called "my_topic" $ git checkout --track -b my-topic remotes/my_topic # Create the Git branch for "my_topic" # Hack hack hack... $ git svn dcommit --dry-run # Make sure you're committing to the right SVN branch $ git svn dcommit # Commit changes to "my_topic" branch in SVN
Si vous avez créé votre twig locale avant que la twig de subversion n’existe et que vous souhaitiez maintenant transférer votre twig locale dans une twig de subversion, vous pouvez effectuer les opérations suivantes:
Obtenir la révision de la twig svn affectée à la twig locale
$ git svn info
à partir de la sortie, le champ URL
serait le chemin de twig svn actuel et le champ de Revision
serait le numéro de révision de la subversion
Créez la twig svn de la révision que vous avez créée votre twig locale
$ svn cp http://svn-repo/my_app/trunk@123 http://svn-repo/my_app/twigs/feature1
Récupère la nouvelle twig svn pour que ton repo git le sache
$ git svn fetch
La twig svn devrait maintenant être ajoutée en tant que télécommande dans votre git repo $ git branch -a * feature1 master remotes/feature1
À ce stade, votre télécommande sera toujours le tronc. Vous devez pointer votre twig locale vers la nouvelle succursale distante. Vous pouvez le faire en rebasant votre twig locale à partir de la twig distante: $ git rebase remotes/feature1
Maintenant que votre twig locale fait référence à votre succursale distante, vous pouvez y engager vos modifications. Faites d’abord un essai à sec afin de vous assurer que vos modifications iront dans votre twig distante: $ git svn dcommit --dry-run Commiting to http://svn-repo/my_app/twigs/feature1
Vous pouvez maintenant valider des modifications sur votre twig distante $ git svn dcommit
La plupart des procédures vous indiqueront d’abord de twigr la sous-version, puis de créer une twig locale qui suit la twig distante. Mais souvent, je ne décide pas à l’avance si mon agence locale doit suivre une succursale distante. Souvent, je me twig localement et apporte des modifications sans intention de pousser vers une succursale distante. Si je décide plus tard d’engager ma twig locale dans une succursale distante, je vais suivre les étapes ci-dessus.
Je voulais juste souligner que vous ne devriez pas rebaser sur votre twig récemment créée à partir de choses que vous avez déjà dans une twig git différente. git svn dcommit va ensuite pousser vers le tronc, semble-t-il. Au moins, c’était un problème pour moi.
Au lieu de cela, si vous voulez extraire des modifications d’une ancienne twig git sur cette nouvelle twig svn, utilisez par exemple cherry-pick.