2010-12-09 7 views
4

Ich habe ein Repository namens Master, der Produkt Releases hält. Es hat mehrere Tags (wie 1.0,2.0,3.0) als Grundlinie. Wenn ich Hotfix für eine Version erstellen möchte, z. B. 1.0. Ich benutze Befehl wie folgt:Problem von hg Klon 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 

Ich finde Tipp-Version ist was ich brauche, ist aber nicht mit 1.0 markiert. Es wird dazu führen, dass meine Änderungen in Hotfix_1.0.1 nicht Push-to-Master sein können. der Fehler ist

(abort) unknown 1.0 revision. 

ich überprüfen Master-Repository. Das Protokoll zeigt unter

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 

so scheint es geklonte Repository verloren Changset # 15. Mein Verständnis ist hg Klon srC# Tag dest sollte Klon Tag, die ich brauche klonen. Aber diese Operation kann das Kind des Änderungssatzes # 14, bei dem es sich um einen Tag handelt, nicht klonen. Also, was ich getan habe, ist den Befehl

hg clone master hotfix_1.0.1 -u 1.0 

Ich mag diesen Befehl nicht. Wenn das Master-Repository riesig ist und ich nur die alte Version reparieren möchte, wird es Zeit verschwenden, Änderungen zu klonen und zu pushen.

Gibt es einen anderen Ansatz, um ein Repository von einer Baseline oder einem Tag korrekt zu klonen?

dank ...

+0

Mögliche Duplikat mit meiner [Frage] (http://stackoverflow.com/questions/3770889/how-to-get-the-tag-changeset-after-you-clone-or-pull-to-a-tag -verwenden-mercurial). Ich sagte in einem meiner Kommentare, dass ein Pre-Clone- und Pre-Pull-Hook, um das rev-Argument zu ändern, um das Tag-Changeset (wenn es das einzige Kind ist) die beste Lösung wäre, aber ich hatte nie die Chance, es tatsächlich zu tun . –

Antwort

6

Durch die Gestaltung von Mercurial-Tags, wird die getaggten Revision nicht den Tag enthält. Mit anderen Worten, 1.0 "weiß" nicht, dass es 1.0 ist.

Mercurial recommends die Lösung, die Sie am Ende geben. Eine mögliche Minderung für die Performanceprobleme besteht darin, einen einzelnen Klon des Masters, den Sie nicht ändern, beizubehalten (wenn nötig). Dann, (wie benötigt) klonen Sie das lokal und aktualisieren Sie auf die gewünschte Version. Der Klon wird (unter der Annahme des gleichen Volumens und eines modernen Dateisystems) hard links verwenden, wodurch das erforderliche Kopieren minimiert wird.

Verwandte Themen