2017-09-20 2 views
2

Alors que l'interface utilisateur de Bitbucket permet d'étiqueter une validation donnée d'un dépôt Mercurial, je ne peux pas trouver un moyen (en ligne ou en ligne de commande) pour supprimer l'étiquette, qui pourrait être ajouté par erreur (en fait, il n'y a pas d'invite de confirmation pour l'ajouter). Lorsqu'il est utilisé pour contrôler les versions, ce type d'erreur peut être un problème majeur.Comment se déconnecter dans Bitbucket

+0

@cantSleepNow c'est une question mercuriale, pas git. –

+0

@ marco.m Oui, j'ai vu cette deuxième fois après avoir voté pour fermer, mais j'ai ensuite rétracté le vote. Merci de l'avoir signalé. Quand je clique pour fermer maintenant il te dit "Tu as voté pour clore cette question il y a 6 heures Tu as rétracté ton vote il y a 6 heures' bizarre ...Peut-être que c'était juste le commentaire automatique qui restait ... – cantSleepNow

+0

@cantSleepNow ah je vois, pas de problèmes! –

Répondre

1

Mercurial dispose d'un mécanisme d'aide intégré pour toutes les commandes. Dans ce cas, hg help tag montre:

options: 

-f --force  force tag 

Ajoutons une balise, puis déplacez-le:

$ hg init foo 
$ cd foo/ 
$ touch a 
$ hg add a 
$ hg commit -m 'add a' 
$ hg tag 0.1.0 

Quelle est l'histoire?

$ hg log -G 
@ changeset: 1:9352d8865ee5 
| tag:   tip 
| summary:  Added tag 0.1.0 for changeset a4cab63b7c86 
| 
o changeset: 0:a4cab63b7c86 
    tag:   0.1.0 
    summary:  add a 

Ahh, nous avons changé d'avis. Il nous manque un fichier. Ajoutons (et donc ajouter quelque chose à l'histoire de hg):

$ touch b 
$ hg add b 
$ hg commit -m 'add b' 

Nous voudrions déplacer la balise 0.1.0 à la pointe. Essayons:

$ hg tag 0.1.0 
abort: tag '0.1.0' already exists (use -f to force) 

Très clair. Essayons à nouveau:

hg tag --force 0.1.0 

Quelle est l'histoire?

hg log -G 
@ changeset: 3:04b62f2a9b16 
| tag:   tip 
| summary:  Added tag 0.1.0 for changeset 3d8bb8a977e6 
| 
o changeset: 2:3d8bb8a977e6 
| tag:   0.1.0 
| summary:  add b 
| 
o changeset: 1:9352d8865ee5 
| summary:  Added tag 0.1.0 for changeset a4cab63b7c86 
| 
o changeset: 0:a4cab63b7c86 
    summary:  add a 

Comme nous pouvons le voir, la balise a été déplacée vers le nouvel emplacement.

Pour la curiosité, comment sont stockées les étiquettes? Dans un simple fichier texte:

$ cat .hgtags 
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0 
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0 
3d8bb8a977e6be693a30c30d7d7675d04623690f 0.1.0 

Si le fichier .hgtags a plusieurs entrées avec la même étiquette, la dernière gagne. Ceci est souvent vu lors de la fusion des branches.

À gauche pour le lecteur: il est clair que ces changements sont locaux. Vous devez pousser à bitbucket pour les rendre publics.

EDIT

Pour répondre à la question supplémentaire: est-il un moyen d'enlever une étiquette, ou de renommer un tag pour la même commettre?

Le moyen le plus sûr est de ne pas renommer le tag, c'est d'ajouter le nouveau nom de tag pour le même commit (avec hg tag -r REV). Dit d'une autre manière: un seul commit peut avoir associé autant de tags que vous le souhaitez.

Il est également possible de supprimer l'étiquette, simplement en supprimant la ligne correspondante de .hgtags. C'est délicat à obtenir, car il y a une copie de ce fichier par branche, et il pourrait revenir à la suite d'une fusion.

+0

Par curiosité: est-il possible de supprimer un tag? Vous pouvez également supposer que vous l'avez tapé de manière incorrecte (par exemple, 0,1. =) Et que vous souhaitez modifier la balise pour le même commit. Comment tu fais ça? – nightcod3r

+0

@ nightcod3r J'ai mis à jour la réponse pour refléter cette nouvelle question. –