54 votes

Comment ne pousser qu'une branche en Hg?

J'ai un Hg repo avec 3 branches en elle, mais deux d'entre eux sont inactifs (puisque j'ai déjà fusionné dans ma branche par défaut). hg têtes d' affiche 3 têtes, une pour chaque branche, même si hg branches montre 2 de ces branches, comme "inactif".

Lorsque j'essaie de pousser ma branche par défaut (à l'aide de hg push --la branche par défaut http://...) à un autre repo, la fusion avortée avec le message "annuler: appuyez crée de nouvelles branches distantes: !"

À partir de la Hg push pages de man, "Par défaut, le poussoir de ne pas autoriser la création de nouvelles têtes lors de la destination, depuis plusieurs administrateurs, il est difficile de qui la tête à utiliser. Dans cette situation, il est recommandé de tirer et de fusion avant de le pousser."

Je l'ai déjà fait, mais j'ai encore cant pousser, branche par défaut sans faire avorté.

Toute aide est appréciée. Merci!

59voto

Ry4an Points 56453

Si des révisions sur default ont ancêtre des révisions sur les autres branches que vous avez à faire ces révisions trop. Il n'est pas possible pour un ensemble de modifications à exister dans une pension sans toutes ses révisions existant aussi.

Donc, essayez:

hg push --branch default --new-branch

qui dit "ouais, je sais que ce push envoie à travers un nom de branche que le repo distant n'a pas déjà vu avant" (elle aussi nécessite Mercurial 1.6 ou version ultérieure IIRC)>

Aussi, vous pouvez prendre les inactifs chefs et de les rendre fermés avec des têtes de:

hg update thebranch
hg commit --close-branch -m 'closing'

Parce que "les branches nommées pour toujours" beaucoup de gens choisissent de réserver longtemps vécu des concepts comme "stable" et "expérimental" et à l'utilisation des signets, des anonymes, des branches ou des clones pour les fonctionnalités, les rejets, et d'autres transitoires les choses. Voir ce pour un guide sur les autres options.

33voto

Pour pousser une seule branche, utilisez simplement -b

 hg push -b myBranch
 

Quant à la question spécifique, vous voudrez peut-être se pencher sur la fermeture des branches. Je sais que SourceTree le propose, mais je ne suis pas sûr des détails

1voto

Gilson Points 186

Vous pouvez le FORCER!

Voici comment:

1. Pull from your repository
2. hg push --rev nnn -f (replace nnn with your Rev # of your working branch)
3. do NOT force before PULLing. if you do things will get out sync and you are screwed

Si vous utilisez quelque chose comme RhodeCode puis vérifier après la forçant et vous verrez que votre dernière branche est là.

Cependant, je pense que, plus tard, Mercurial vous demande de pousser l'autre branche de nouveau, même si vous la fermez, Mercurial vais essayer de créer la branche sur un serveur.

Je suis un utilisateur Git aussi et a couru dans la même situation qu'un client est en utilisant Mercurial mais je voudrais utiliser Git style.

Je pense que c'est faisable mais je n'ai pas compris à 100% encore.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X