2010-12-09 4 views
4

J'ai un référentiel nommé maître qui conserve les versions du produit. Il a plusieurs balises (telles que 1.0,2.0,3.0) comme ligne de base. Lorsque je veux créer un correctif pour une version, par exemple 1.0. J'utilise la commande comme suit:Problème de hg clone srC# tag dest

hg clone master#1.0 hotfix_1.0.1 
cd hotfix_1.0.1 
hg tip 

changeset: 14:b2492c2611a1 
tag:   tip 
user:  codingboy <[email protected]> 
date:  Thu Dec 09 14:03:23 2010 +0800 
summary:  fix bug4 

Je trouve la version de pointe est ce dont j'ai besoin, mais n'est pas étiqueté avec 1.0. Il va provoquer mes changements dans hotfix_1.0.1 ne peut pas être pousser à maîtriser. l'erreur est

(abort) unknown 1.0 revision. 

Je vérifie le référentiel maître. le journal montre ci-dessous

changeset: 15:3497c46cbc7f 
tag:   tip 
user:  codingboy <[email protected]> 
date:  Thu Dec 09 14:03:27 2010 +0800 
summary:  Added tag 1.0 for changeset b2492c2611a1 

changeset: 14:b2492c2611a1 
tag:   1.0 
user:  codingboy <[email protected]> 
date:  Thu Dec 09 14:03:23 2010 +0800 
summary:  fix bug4 

alors il semble que le référentiel cloné ait perdu le changset # 15. Ma compréhension est hg clone srC# tag dest doit cloner tag dont j'ai besoin. Mais cette opération ne peut pas cloner l'enfant du changeset # 14 qui est en train de taguer. Donc ce que j'ai fait est d'utiliser la commande

hg clone master hotfix_1.0.1 -u 1.0 

Je n'aime pas cette commande. Si le référentiel maître est énorme et que je veux juste corriger l'ancienne version, cela va perdre du temps à cloner et à pousser les changements. Est-ce que j'ai une autre approche pour cloner un référentiel à partir d'une référence ou d'une balise correctement?

... merci

+0

Possible dupliquer avec ma [question] (http://stackoverflow.com/questions/3770889/how-to-get-the-tag-changeset-after-you-clone-or-pull-to-a-tag -using-mercurial). J'ai dit dans un de mes commentaires qu'un pré-clone et un pré-pull hook pour changer l'argument rev pour inclure le changeset tag (si c'est le seul enfant) serait la meilleure solution, mais je n'ai jamais eu l'occasion de le faire . –

Répondre

6

En raison de la conception des étiquettes Mercurial, la révision étiquetée ne contient pas cette étiquette. En d'autres termes, 1.0 ne "sait" pas que c'est 1.0.

Mercurial recommends la solution que vous donnez à la fin. Une solution possible pour les problèmes de performance est de conserver (en tirant au besoin) un seul clone de maître que vous ne modifiez pas. Puis, (au besoin) cloner localement et mettre à jour à la version désirée. Le clone va (en supposant le même volume et un système de fichiers moderne) utiliser hard links, en minimisant la copie requise.