Faire une autre branche par défaut?
J'ai un repo Mercurial chez Bitbucket et sur ma machine locale, les deux sont des miroirs, à jour. J'ai créé une branche de fonctionnalité, reflétée dans les deux repos. J'ai fait tout mon travail dans la branche.
La branche est maintenant terminée et je veux maintenant faire le défaut pour les principaux repo et ma copie locale. Je ne me soucie pas vraiment de la branche par défaut, assez de travail est allé dans la branche de fonctionnalité que tout ce que je veux faire est de la désigner comme la nouvelle valeur par défaut.
Je ne pense pas que je veux pour fusionner ni devrais-je? Comment puis-je faire cela pour que les locaux et les distants ne soient pas confus?
4 réponses
Juste de fusion feature-branch
dans default
, puis fermez feature-branch
:
$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch
Il N'y a pas de moyen plus propre et plus sensé (dont je suis conscient) de "faire feature-branch
la valeur par défaut".
Une chose qui ne serait pas aussi agréable, mais que vous pourriez faire, est de faire un commit à default
au-dessus de feature-branch
:
$ hg checkout feature-branch
$ hg branch default
$ hg commit
Mais cela laisserait deux têtes dans la branche default
, qui est sous-optimale.
Depuis Mercurial 2.4, Vous pouvez créer un signet appelé @
et Mercurial va extraire cette révision de nouveaux clones.
Cependant, j'essaierais toujours d'utiliser {[3] } comme branche où le développement principal a lieu. Cela provoquera le moins de surprise pour les développeurs déjà habitués à Mercurial - le wiki décrit la manière standard d'utiliser les branches dans Mercurial.
Si vous suivez le Conseil conventionnel d'utiliser default
comme branche principale pour développement, alors vous devriez fermer votre branche de fonctionnalité avant de la fusionner:
$ hg update feature-branch
$ hg commit --close-branch -m "Feature done, merging into default branch"
$ hg update default
$ hg merge feature-branch
$ hg commit
Si vous n'avez pas travaillé du tout sur la branche par défaut depuis que vous avez démarré la branche feature, cette fusion sera triviale et n'aura aucun conflit. Sinon, vous devrez résoudre les conflits. Si vous êtes sûr de vouloir tout garder de la branche de fonctionnalité, alors vous pouvez faire
$ hg merge --noninteractive --tool internal:local feature-branch
$ hg revert --all --rev feature-branch
Au lieu de juste hg merge
ci-dessus. Cela fera en sorte que le nouveau commit sur default
ressemble exactement au dernier commit sur feature-branch
.
J'ai réussi sans fusionner en fermant la branche par défaut.
Dans mon répertoire de travail du référentiel de développement:
$ hg update default
$ hg commit --close
Ensuite, ma branche de développement est devenue la nouvelle branche par défaut. Mais je ne connais pas les règles pour lesquelles ma branche de développement a été choisie comme nouvelle valeur par défaut. je pense que c'est parce que c'était mon astuce ? (ou peut-être la dernière branche changée? (pourboire?))
Je pense aussi que vous devez répéter cela la prochaine fois. Parce que je pense que mon nom de branche choisi a été "écrasé" par le "défaut" du nom.
Ce serait bien d'avoir un nom de branche.
Dev-projectname-version.x = par défaut
Cordialement
Je voulais faire exactement ce que vous avez décrit et chassé jusqu'à ce que je trouve une réponse qui utilise la commande revert pour faire exactement ce que vous décrivez. Voici le code que j'ai utilisé:
Hg revenir --tous --rev ${1}
HG commit-m "restaurer la branche ${1} par défaut"
Où ${1} est le numéro de la révision ou le nom de la branche. Ces deux lignes font en fait partie d'un script bash, mais elles fonctionnent bien seules si vous voulez le faire manuellement.
Ceci est utile si vous besoin d'ajouter un correctif à une branche de publication, mais besoin de construire à partir de default (jusqu'à ce que nous obtenions nos outils CI et capables de construire à partir de branches et plus tard de supprimer les branches de publication).