2010-10-08 6 views
2

Nous avons tout converti en Mercurial venant de CVS et jusqu'ici tout va bien. Un problème que nous avons rencontré aujourd'hui est cependant cette situation. Avant le passage à Mercurial, il y avait quelques changements en attente, des fonctionnalités qui ont été lancées et différées plus tard pour diverses raisons. Les chances sont que quelqu'un d'autre va finir ces fonctionnalités mois à partir de maintenant ramasser d'où je me suis arrêté. Après le clonage du nouveau référentiel Mercurial, j'ai créé des branches séparées pour isoler ces entités.Mercurial - comment pousser les branches inachevées?

Il me reste quelque chose comme ça (composé rev. Nombre)

hg update default 
hg branch feature1 
hg commit -m "Description of what I was doing in feature1" 
hg update default 
hg branch feature2 
hg commit -m "Description of what I was doing feature2" (my tip is now here) 
hg update default 
hg push -f (to force the creation of my new branches, w/o affecting default, I haven't merged them) 

Au cours de cette l'équipe ont travaillé et pousser à notre dépôt central de sorte que la branche par défaut est de dire rev 40 (pointe)

maintenant, mon pousser -f a bien fonctionné, mais positionné (pointe) à mon dernier changement -> 50: Caractéristique3 (pointe). Je m'attendais à ce que le pourboire reste en défaut sur le dépôt central et que mes branches soient là pour que quelqu'un puisse les ramasser à chaque fois. Le graphique semble aussi assez drôle quand j'utilise hgwebdir, donc je suis à peu près sûr que c'est la mauvaise approche.

Comment est-ce que je ferais ceci? Devrais-je fermer la succursale en premier? L'astuce est-elle réellement importante ou simplement méta-donnée.

Répondre

4

tip est toujours le plus récent changeset ajouté au référentiel. De hg help revs:

Le nom réservé "tip" est une étiquette spéciale qui identifie toujours la révision la plus récente.

Tant que la tête de la branche par défaut est ce que vous attendez, vous serez OK. Pas besoin de fermer la branche (mais il vaut mieux utiliser hg push --new-branch si votre version de Mercurial est assez récente pour la supporter).

1

tip est juste une étiquette automatiquement appliquée en référence à (je pense) la plus récente validation. Pas un gros problème; c'est juste là pour plus de commodité.

+0

Merci de votre confirmation. – jfrobishow

1

L'étiquette tip est pur méta-données et pointe toujours à la changeset avec le plus grand nombre de révision - il n'y a pas plus logique que cela.

Cependant, le fait que tip pointe maintenant vers un changeset sur la branche de fonction wont vous causer aucun problème. Lorsque les gens font un clone, ils seront automatiquement mis à jour au tip-most changeset sur la branche default. Ils peuvent donc commencer à travailler immédiatement après un clone. De plus, les personnes qui ont déjà un clone resteront sur leur branche nommée lorsqu'elles exécuteront hg update. Ici hg update vous amène à l'ensemble de modifications le plus tip sur cette branche nommée, par exemple, sur default si c'est là que vous avez commencé.

Les gens peuvent penser que hg update tip est le même que hg update, mais est seulement quand il n'y a pas de succursales qui sont en jeu. Avec des branches nommées, l'attribution d'un nom de révision explicite tel que tip peut modifier votre branche nommée, ce que ne peut pas faire un hg update.

Questions connexes