J'utilise le ci-dessus semble être le moyen d'aller, Peut-être que mes peurs sont sans fondement parce que on remarquera le désordre avant de pousser le commit vers le représentant central, mais j'aimerais voir s'il est possible de faire l'approche plus infaillante. p> J'ai donc commencé à regarder dans des crochets: p> .. mais alors réalisé que ce n'est pas ce dont j'ai besoin, car cela ne permettra pas Moi de pousser des changements d'Aristote du tout. P> Je ne suis donc pas sûr de quoi faire. Idéalement, je souhaite que les développeurs voient le message "Faux de mauvaise manière" lorsqu'ils tentent de commettre une fusion de merci! p> p> branche par défaut code> pour le développement en cours, et maintenant créer une nouvelle branche nommée pour marquer une version. Tout le développement ultérieur sera sur la branche par défaut, tous les fous de production seront effectués sur le nouveau (avec une fusion ultérieure à
par défaut code>), comme celui-ci:
par défaut code> à
aristote code> qui signifie que tout Les nouvelles fonctionnalités apparaîtront dans la branche de production). P>
par défaut code> à
aristote code> localement fort> (évidemment, Il devrait y avoir une double vérification sur le repo central), tandis que la fusion de la branche de production doit être possible. p>
3 Réponses :
Ceci est à peu près un duplicate exact d'une question de quelques jours il y a quelques jours mais je n'ai pas aimé ma réponse à celle-là, alors qu'en est-il de celui-ci: p> garder clones séparés pour les versions passées. Lorsque, dans votre exemple ci-dessus, vous décidez que vous devez effectuer une solution d'urgence sur Aristote, faites cela à la place: p> alors vous avez un clone avec seulement Aristote et vous pouvez 'T Fusionner accidentellement en défaut dans ce clone. P> Cela dit, ce n'est toujours pas une bonne réponse. La seule véritable consolation est que si vous fusionnez dans une direction, vous n'aimez pas que vous puissiez toujours recalculer les deux têtes et fusionner dans l'autre direction. P> P>
Oui je vois. Merci. Le problème est que j'ai décidé d'aller chercher des succursales au lieu de cloner, au tout début :) Je veux toujours donner cela un essai .. Pensez-vous que «PrettexnCommit» pourrait aider?
Vous utilisez Ccan utilisez des branches anonymes, des clones-branches et des branches nommées dans une combinaison de toute combinaison, ce n'est donc pas trop tard. Il suffit de faire la commande clone que je donne ci-dessus et vous aurez un clone avec uniquement la tête de la branche nommée, de sorte que vous ne pouvez donc pas contraindre accidentellement l'inverse. Un crochet de prettexncommit pourrait vous ralentir, mais vous ne pouvez pas la stocker dans le référentiel (.hg / hgrc n'est pas cloné) pour que quelqu'un d'autre va juste commettre l'erreur pour vous.
J'ai trouvé cette question tout en recherchant une solution à un problème connexe, je connais sa vieille question, mais je pensais partager notre solution.
Nous avons libéré des succursales appelées publication-x.y.z et développement en cours sur défaut. Nous utilisons un crochet basé sur l'exemple précommkit_badbranch_badmerge trouvé à https://www.mercurial-scm.org / wiki / hookexamples . p>
Nous extrayons essentiellement le numéro de version de chaque branche impliquée dans n'importe quelle fusion et assurez-vous qu'il se passe correctement (la valeur par défaut est traitée comme 9999.9999.9999 t une branche de libération ou de défaut obtient -1, -1, -1 (peut être fusionné dans n'importe quoi). p>
Notez que cela ne fait qu'un simple "immédiat", il n'atteigne pas les problèmes où quelqu'un Fusion de valeur par défaut à la branche BLAH puis sur une branche de déverrouillage. P>
comme une note latérale, nous avons également une politique que la fusion de défaut doit être poussée en même temps que la modification initiale de la libération branche, cela évite que quelqu'un d'autre devait faire la fusion afin de fusionner leurs propres changements - il est en application que je cherchais une solution pour. p>
note, vous invoquez ceci à l'aide de la section Hooks de la serveur / central Repo p> crochet python ci-dessous: p>
Cela devrait le faire. Il utilise un Requête pour trouver des fonts dans J'ai récemment eu besoin de comprendre cela sur moi-même mais Également nécessaire pour que Aristote code> à partir de
défaut code>.
hg log -r 'children(p2(::aristotle and ::default and merge()) and branch(default)) and branch(aristotle)'
:: aristote and :: par défaut et fusion () code> trouve toutes les fonte des ancêtres des deux
aristote code> et
par défaut code> branches li >
p2 (...) et branche (par défaut) code> saisit le deuxième parent (changements entrants) qui figurent sur la branche code> par défaut li>
enfants (...) et branche (aristote) code> saisit ensuite la modification de la fusion réelle figurant sur la branche code> aristote code>. li>
ul>
défaut code> n'était pas indirectement em> fusionné dans ma branche de version, c'est-à-dire par défaut -> Feature -> Libération. P> P>
Peut-être que vous pouvez faire quelque chose où si le commit est sur la Direction de la production, et que ce qui s'engage a plus d'un parent (une commission fusion), et l'un de ces parents est sur la branche par défaut, échoue. Vous voudrez peut-être regarder à la contient Extension pour vous aider avec une partie de ceci: mercurial.selenic.com/wiki / Contusextension Nous n'avons pas de véritables protections contre cela, mais nous avons un crochet post-validation qui imprime ce qui s'est passé en réalité lors de la commission (vous fusionnez la branche1 dans la branche2), que le développeur peut lire à Vérifiez qu'ils ont fait la bonne chose.
Mark, merci beaucoup pour le commentaire mais "HG Mettre à jour par défaut" suivi de "HG Fusion Aristote" semble exactement comme "Branche de fusion1 dans le message de branche2" (et hélas, un message n'empêche pas le mauvais push / commit). De plus, je ne sais pas comment cela "contient une extension" peut aider dans mon cas :( Vous pouvez peut-être élaborer comment vous avez mis en œuvre exactement votre crochet post-validation?
Mon crochet post-validation n'empêche pas vraiment quoi que ce soit de se produire, mais il fournit des informations à la personne qui fait la commission qui explique l'action qui se produit. C'est un peu comme lorsque vous avez lu un numéro de téléphone à quelqu'un, puis demandez-leur de vous la lire pour vous assurer qu'ils vous comprenaient. Vous effectuez une fusion, puis Mercurial explique l'action à vous de vous permettre de vous aider à attraper une erreur.
L'extension contient peut être utile si vous souhaitez vérifier que certaines modifications ne sont pas présentes dans la construction de la production. Je n'aime pas terriblement la solution que je suis sur le point de décrire, mais ici ça va. Juste après la ramification de la branche de production de défaut, vous pouvez commettre une modification de défaut qui ne sert à aucun autre but, mais de marquer le point à laquelle le développement détourné de la branche de production. Ensuite, vous pourriez vérifier (avec l'extension contenant) que cette modification n'est jamais présente dans la branche de production. C'est laborieux, mais je suis juste en train de réfléchir, essayant de vous donner des idées.
Dupliqué possible de Assurer une fusion entre les branches se produit dans une direction a>