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?

30
demandé sur Martin Geisler 2011-03-24 22:19:29

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.

24
répondu David Wolever 2013-02-25 16:45:09

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.

17
répondu Martin Geisler 2016-11-12 02:51:02

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

8
répondu cognacc 2011-06-01 14:06:49

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).

1
répondu Brian Carr 2016-03-25 16:01:30