Comment faire pour pousser à une seule twig dans Hg?

J’ai un repo Hg avec 3 twigs, mais deux d’entre elles sont inactives (puisque je les ai déjà fusionnées dans ma twig par défaut). hg heads montre 3 têtes, une pour chaque twig, même si hg twigs montre 2 de ces twigs comme «inactives».

Lorsque j’essaie de pousser ma twig par défaut (en utilisant hg push –branch default http: // … ) dans un autre repository, la fusion est abandonnée avec le message “abort: push crée de nouvelles twigs distantes:!”

A partir des pages de manuel Hg, “par défaut, push n’autorisera pas la création de nouvelles têtes à la destination, car plusieurs têtes empêcheraient de savoir quelle tête utiliser. Dans cette situation, il est recommandé de tirer et fusionner avant de pousser.”

Je l’ai déjà fait, mais je ne peux toujours pas pousser la valeur par défaut –branch sans qu’elle soit annulée.

Toute aide est appréciée. Merci!

Si les modifications par default ont des modifications d’ancêtres sur d’autres twigs, vous devez également les modifier. Un ensemble de modifications ne peut pas exister dans un repo sans que tous ses changesets existent également.

Alors essayez:

 hg push --branch default --new-branch 

qui dit “ouais, je sais que ce push envoie à travers un nom de twig que le repo distant n’a jamais vu auparavant” (il nécessite également Mercury IIRC 1.6 ou ultérieur)>

En outre, vous pouvez prendre ces têtes inactives et les rendre têtes fermées avec:

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

Parce que les “twigs nommées sont éternelles”, de nombreuses personnes choisissent de les réserver pour des concepts de longue durée tels que “stable” et “experimental” et utilisent des signets, des twigs anonymes ou des clones pour les fonctionnalités, versions et autres éléments transitoires. Voir ceci pour un guide sur ces autres options.

Pour pousser une seule twig, utilisez simplement -b

 hg push -b myBranch 

en ce qui concerne le problème spécifique, vous voudrez peut-être examiner les succursales de fermeture. Je sais que SourceTree le propose, mais je ne suis pas sûr des détails

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, vérifiez-le après l’avoir forcé et vous verrez que votre dernière twig est là.

Cependant, je pense que plus tard, Mercurial va vous demander de repousser l’autre twig, même si vous la fermez, Mercurial va essayer de créer cette twig sur un serveur.

Je suis également un utilisateur de Git et je me suis retrouvé dans la même situation car un client utilisait Mercurial mais je voudrais utiliser le style de workflow de Git.

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