Nouvelle télécommande de la tête lors de la poussée de la nouvelle branche
J'ai créé un named
branche dans mercurial, commis quelques changements, et maintenant, je veux ramener cela à la centrale des pensions. J'ai fait une extraction, vérifié, je n'ai aucune modification à la fusion, mais quand j'essaie de faire pousser, je reçois le message push creates new remote head
mais je ne comprends pas pourquoi. Je suis le seul dev sur ce branche et il est encore local à mon référentiel.
>hg fetch (pull/update/merge)
>hg status (shows nothing)
>hg push --new-branch mybranch
searching for changes
new remote heads on branch 'default'
new remote head c3064f3cf1b7
abort: push creates new remote head c3064f3cf1b7!
(did you forget to merge? use push -f to force)
Des idées?
Modifier: désolé pour la confusion, ce est une branche nommée créé par hg branch mybranch
Mise à jour: à l'aide de hg heads
les rendements de plusieurs têtes de tous sur les différentes branches. J'en ai un pour ma branche, et un sous par défaut:
changeset: 515:97b9a7802751
branch: mybranch
user: me <[email protected]>
date: Mon Feb 27 13:21:54 2012 -0800
files: CryptoRandom.cs
description:
fixing error message for size of max
changeset: 504:c3064f3cf1b7
user: me <[email protected]>
date: Thu Feb 09 11:41:32 2012 -0800
files: CipherKey.cs
description:
removing ambiguous characters - CAC-47
à l'aide de hg log -r c3064f3cf1b7
donne ceci (c'est la tête par défaut):
changeset: 504:c3064f3cf1b7
user: me <[email protected]>
date: Thu Feb 09 11:41:32 2012 -0800
files: CipherKey.cs
description:
removing ambiguous characters - CAC-47
hg heads
vous montrera tous les chefs. Qui devrait vous dire où c3064f3cf1b7
supports avec d'autres chefs, trop.Suivrez-up à @JoelBFant:
hg log -r c3064f3cf1b7
. Il semble que vous n'avez pas nouvelle branche nommée, mais anonyme branche par défautajout de plus d'info sur la branche. Je suis sûr que c'est une branche nommée...
Et vous avez tiré tout pour le
default
branche à partir de l'autre dépôt que vous avez envie de pousser?Je ne suis pas sur
default
et n'est pas prêt à fusionner encore de retour. Ai-je vraiment besoin de passer à default
et tirez?OriginalL'auteur earthling | 2012-02-27
Vous devez vous connecter pour publier un commentaire.
La déroutant, c'est que le
--new-branch
indicateur n'a aucun effet lorsque l'on pousse branches (aussi connu comme anynomous branches). Une branche anonyme ressemble à ceci:Toutes les révisions sont sur
default
si vous avez maintenant deux têtes surdefault
. Lorsque vous poussez, vous allez créer deux têtes sur le serveur mais Mercurial abandonne avant que, avec l'avertissement que vous voyez. Il abandonne puisque le fait d'avoir plusieurs têtes sur un serveur est source de confusion: lorsque voushg clone
votre copie de travail sera mis à jour à l'un d'eux, presque au hasard.La
--new-branch
drapeau est seulement pour nom les branches. Mercurial normalement abandonner si vous appuyez une nouvelle branche nommée à un dépôt distant. L'ajout de la--new-branch
drapeau est de savoir comment vous dire d'aller de l'avant.Malheureusement, nous n'avons pas consacré
--create-new-feature-branch
drapeau. Nous avons seulement le--force
drapeau qui indique Mercurial aller de l'avant et de créer deux têtes dans le dépôt distant. L'inconvénient de--force
est qu'il l'emporte sur tous les contrôles de sécurité: vous pouvez pousser trois ou plus de nouvelles têtes avec le drapeau et vous pouvez même pousser dans un autre référentiel.Donc, vous devriez utiliser
hg outgoing
de vérifier ce que vous allez pousser.J'ai écrit ci-dessus que plusieurs têtes sur le serveur est source de confusion car un nouveau clone sera mis à jour au hasard de la tête. Pour éviter la confusion, vous pouvez donner les branches noms par bookmarking. Vous serez toujours à jour au hasard de la tête, mais
hg bookmarks
va vous montrer la disposition des branches et vous pouvez ensuite mettre à jour vers la droite. Donc, si vous utilisez un flux de travail, puis aller de l'avant avechg push -f
.J'type
hg branch
et je reçois mon nom de la branche:php7
par opposition àdefault
. Mais je ne pouvais toujours pas à pousser avec--new-branch
. Est-ce à dire que je n'étais pas dans une branche nommée? Comment est-ce possible? J'ai trouvé le seul moyen de poussée a étéhg push -f
mais qui ne se sent pas bien pour ma nouvelle branche nomméephp7
OriginalL'auteur Martin Geisler
Tout comme par magie résolu cela, mais ne sait pas pourquoi. Il ne semble pas être un problème avec
default
même si je ne travaille pas sur cette branche. Je pourrais appeler>hg branch
et obtenir le devraient nom de la branche.J'ai eu un changement dans mon local
default
branche qui n'a pas été poussé, et ne voulait pas. J'ai enlevé de la variation et puis validées. J'ai ensuite fait unefetch
sur la branche par défaut et fusionné à ma branche. Puis retour surdefault
j'ai fusionné avec l'ensemble de modifications sur les défaut que j'ai enlevé de je crois. Au cours de ce processus, j'ai encore un autre chef, qui a probablement causé l'multiples fusions.Tout semble se résumer à l'existant, de têtes de défaut, mais je ne sais toujours pas pourquoi (ou pourquoi nous voudrions) qui affecte un distinct nommé branche.
Tout cela semble trop compliqué pour ce que j'attends d'arriver (et ce que tout le monde peut simplement tirer en ascii diagrammes)
Modifier
On dirait que le problème vient lors de la première branche peut-être. On dirait que je lance deux fois et
[j]
est une branche anonyme par défaut.de tri de visualiser ce qui semble se passer
[j]
est mon changeset j'ai soutenu et[k]
est mon premier commit sur mybranch:OriginalL'auteur earthling