Comment fermer correctement une fonction de direction dans l'Mercurial?
J'ai fini de travailler sur une branche feature-x
. Je veux fusionner les résultats de retour à la default
de la branche et de fermer feature-x
afin de se débarrasser de lui à la sortie de hg branches
.
Je suis venu avec le scénario suivant, mais il a quelques problèmes:
$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
De sorte que le feature-x
branche (changests 40
-41
) est fermé, mais il est un nouveau chef, la fermeture de la branche de la révision 44
, qui seront inscrites dans hg heads
à chaque fois:
$ hg log ...
o 44 Closed branch feature-x
|
| @ 43 merge
|/|
| o 42 Changeset C
| |
o | 41 Changeset 2
| |
o | 40 Changeset 1
|/
o 39 Changeset B
|
o 38 Changeset A
|
Mise à jour: Il semble que depuis la version 1.5 Mercurial n'affiche pas les chefs de la fermeture des succursales dans la sortie de hg heads
plus.
Est-il possible de fermer une fusion de la branche, sans quitter un plus la tête? Est-il plus correct façon de fermer une branche?
Questions connexes:
- mais l'article a souligné ne PAS seulement parler de "- près-branche". Il montre quatre façons de tailler votre branche. Si vous ne voulez vraiment pas plus, vous pouvez cloner comme expliqué dans l'article. Le seul "problème" est que si pour une raison quelconque vous voulez le fermer, mais le garder.
- Oui, j'ai lu l'article en entier sur l'élagage des branches mortes. Je veux de la direction afin de rester dans la révision de l'histoire, de ne pas le jeter. Auparavant, j'ai juste fusionné branches en
default
sans "fermeture" d'eux. Il en est résulté 0 nouvelles têtes, mais ces branches étaient visibles danshg branches
jamais (comme inactif branches). - Pour développer des fonctionnalités, j'ai tendance à cloner le dépôt entier et ensuite l'intégrer dans une fois que la fonction est terminée. Je n'aime pas avoir le reste de l' (fermé) des branches dans l'histoire.
Vous devez vous connecter pour publier un commentaire.
Une façon est de simplement laisser fusionné branches ouvrir (ou inactif):
Une autre façon est de fermer une branche avant de fusion en utilisant un supplément de commettre:
La première méthode est plus simple, mais il laisse ouverte la branche. La seconde ne laisse pas ouvrir les chefs/branches, mais il nécessite une auxiliaire de s'engager. On peut combiner le dernier commit de la branche avec ce surplus de valider à l'aide de
--close-branch
, mais il faut savoir à l'avance qui commit sera le dernier.Mise à jour: Depuis Mercurial 1.5 vous pouvez fermer la succursale, à tout moment, de sorte qu'il n'apparaît pas dans les deux
hg branches
ethg heads
plus. La seule chose qui pourrait éventuellement vous ennuyer, c'est que, techniquement, le graphe de révision aura toujours une révision de plus, sans enfants.Mise à jour 2: Depuis Mercurial 1.8 signets sont devenus une caractéristique fondamentale de Mercurial. Les signets sont plus commodes pour ramification que les branches nommées. Voir aussi cette question:
Bookmarks are more convenient for branching than named branches
. De Hg pour les signets ne sont pas la même chose que les branches Git. Ils sont pleins de nombreux cas limites qui les rendent impropres comme des branches. Par exemple: lorsque vous clonez un dépôt, vous allez vous retrouver avec le dernier commit dans ledefault
branche. Si vous utilisez des signets, cette révision correspond à un aléatoire (instable) de signet. Si vous utilisez les branches nommées, vous obtiendrez le dernier commit dans l'écurie/branche par défaut, ce qui est généralement ce que vous voulez. Signets va y arriver un jour, mais ils n'y sommes pas encore.abort: push creates new remote branches:
. Qu'aurais-je fait de mal?à mon humble avis il y a deux cas pour les branches qui ont été oublié de fermer
Cas 1:
la branche n'a pas été fusionnés en défaut
dans ce cas, j'ai la mise à jour de la branche et de faire une autre s'engager avec-près-branche, malheureusement, cela élit la direction générale pour devenir le nouveau conseil et, partant, avant de le pousser vers d'autres clones, que j'ai assurez-vous que la véritable astuce reçoit un peu plus de changements et d'autres n'ont pas obtenir confus au sujet de cet étrange conseil.
Cas 2:
de la succursale a été fusionnée à défaut
Ce cas n'est pas très différente de celle du cas 1 et il peut être résolu en reproduisant les étapes pour le cas 1 et les deux autres.
dans ce cas je mettre à jour à la direction de la révision, de faire un autre commit avec --fermeture de la succursale et de fusionner la nouvelle révision qui est devenu le conseil en défaut. la dernière opération crée une nouvelle astuce qui est dans la branche par défaut - HOURRA!
Espère que cela aide les futurs lecteurs.
hg help ci
va vous l'expliquer.MODIFIER aïe, trop tard... je sais lire votre commentaire en indiquant que vous souhaitez conserver la fonction-x révision de autour de, la logique de clonage ici ne fonctionne pas.
Je vais encore laisser la réponse ici, car il peut aider les autres.
Si vous voulez vous débarrasser complètement de la fonction "X", parce que, par exemple, il ne fonctionne pas, vous pouvez cloner. C'est une méthode expliquée dans l'article et qu'il fonctionne, et il parle spécifiquement sur la tête.
Autant je comprends que vous avez et ce que vous voulez vous débarrasser de la "fonction-x" de la tête une fois pour toutes:
Si vous faites cela:
Et vous aurez la suite, et vous verrez que la fonction x a en effet disparu:
J'ai peut-être mal compris ce que tu voulais, mais merci de ne pas le mod vers le bas, j'ai pris le temps de la reproduction de vos cas d'utilisation : )
C'est étrange, que personne n'a encore suggéré le plus robuste de la fermeture d'une branche...
Vous pouvez simplement combiner de fusion s'engager avec-près-branche drapeau (c'est à dire s'engager fichiers modifiés et de fermer la succursale en même temps):
Donc, c'est tout. Pas une tête sur revgraph. Pas de supplément de commettre.
merge
de commande, il peut être une bonne idée d'utiliserhg branch
pour vérifier que le nom de la branche de la fusion est une que vous souhaitez conserver.default
au lieu de la branche. Maintenant, je suis confus.