web-dev-qa-db-fra.com

git-svn: comment créer une nouvelle branche svn via git?

J'ai un référentiel Git qui suit un référentiel svn. Je l'ai cloné en utilisant --stdlayout.

J'ai créé une nouvelle branche locale via git checkout -b foobar

Maintenant, je veux que cette branche finisse en …/branches/foobar dans le référentiel svn.

Comment vais-je à ce sujet?

(coupé beaucoup de texte d'enquête. voir l'historique des questions si vous vous en souciez)

194
kch

à partir de git v1.6.1, git svn branch est disponible.

À partir des documents Git:

 branche 
 Créer une branche dans le référentiel SVN. 
 
 -m, --message 
 Permet de spécifier le message de validation. 
 
 -t, --tag 
 Créez une balise en utilisant tags_subdir au lieu du nom branches_subdir 
 spécifié lors de git svn init. 

Les versions précédentes de git ne permettent pas de créer une branche svn.

64
kch

Je sais que cette question a reçu une réponse il y a quelque temps, mais après l'avoir lue, elle pourrait aider à ajouter des exemples de la commande de branche spécifique de git svn et à la relier à un flux de travail typique.

Comme kch a répondu, utilisez git svn branch. Voici un exemple complet (notez le -n pour essai à sec):

git svn branch -n  -m "Branch for authentication bug" auth_bug

Si cela se passe bien, le serveur répond avec la réponse suivante:

Copie https://scm-server.com/svn/portal/trunk à l'adresse r8914 vers https://scm-server.com/svn/portal/branches/auth_bug ...

Et sans le -n _ switch le serveur ajoute probablement quelque chose comme:

Point de succursale possible trouvé: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug =, 8914

Parent de branche trouvé: (refs/remotes/auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Suivi du parent avec do_switch

Le parent suivi avec succès r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(refs/remotes/auth_bug)

La meilleure partie de celle-ci, vous pouvez maintenant créer une branche locale basée sur votre branche distante comme ceci:

git checkout -b local/auth_bug auth_bug

Ce qui signifie "vérifier et créer une branche locale nommée auth_bug et lui faire suivre la branche distante (dernier paramètre) auth_bug

Vérifiez que votre branche locale fonctionne sur cette branche distante en utilisant dcommit avec --dry-run (-n):

git svn dcommit -n

Et le serveur SVN devrait répondre avec le nouveau nom de la branche:

S'engager à https://scm-server.com/svn/portal/branches/auth_bug ...

280
Jesper Rønn-Jensen

@kch Je viens de (7 décembre 2008) compiler la balise v1.6.1-rc1 de git qui contient la commande de branche git svn et la documentation correspondante. Ainsi, la version 1.6.1 de git devrait (espérons-le) contenir cette commande.

4
Bryan J Swift