Frage

Ich mit der Arbeit fertig bin auf einem Zweig feature-x.Ich Zusammenführen möchten, die Ergebnisse zurück an die default Zweig und schließen feature-x um loszuwerden, es in der Ausgabe von hg branches.

Ich kam mit dem folgenden Szenario, aber es hat einige Probleme:

$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch

So die feature-x Zweig (changests 40-41) geschlossen ist, aber es ist eine neue Kopf, die Schließung Filiale änderungssatz 44,, die aufgelistet werden hg heads jedes mal:

$ hg log ...
o  44 Closed branch feature-x
|
| @  43 merge
|/|
| o  42 Changeset C
| |
o |  41 Changeset 2
| |
o |  40 Changeset 1
|/
o  39 Changeset B
|
o  38 Changeset A
|

Update:Es scheint, dass seit der version 1.5 Mercurial nicht zeigen, die Köpfe geschlossen Filialen in der Ausgabe von hg heads mehr.

Ist es möglich zu schließen, ein Zweig zusammengeführt, ohne eine weitere Leiter?Gibt es mehrere richtige Weg, um in der Nähe einen feature-Zweig?

Verwandte Fragen:

War es hilfreich?

Lösung

Eine Möglichkeit ist, einfach verlassen fusionierte Feature Zweige offen (und inaktiv):

$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
feature-x  41:...
    (2 branches)

$ hg branches -a
default    43:...
    (1 branch)

Eine andere Möglichkeit ist es, einen Funktionszweig schließen vor der Verschmelzung eine zusätzliche begehen mit:

$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
    (1 branch)

Die erste ist einfacher, aber es lässt einen offenen Zweig. Die zweiten Blätter keinen offenen Köpfe / branches, aber es erfordert ein weitere Hilfs begehen. Ein kombinieren kann die letzte tatsächliche mit diesem zusätzlichen dem Merkmal Zweig begehen --close-branch commit verwenden, aber man sollte im Voraus wissen, welche begehen wird der letzte sein.

Aktualisieren : Da Mercurial 1.5 Sie den Zweig jederzeit schließen kann, so dass es nicht mehr in beide hg branches und hg heads angezeigt. Das einzige, was man sich nur ärgern könnte, ist, dass technisch die Revision Graph noch eine ohne childen mehr Revision haben wird.

Update 2 : Da Mercurial 1.8 Lesezeichen hat eine Kernfunktion von Mercurial werden. Lesezeichen sind bequemer für als Named Zweige verzweigen. Siehe auch diese Frage:

Andere Tipps

imho gibt es zwei Fälle für Zweige, die zu schließen vergessen wurden

Fall 1:  Zweig wurde nicht in Standard fusioniert

in diesem Fall ich Update auf die Verzweigung und tun begehen andere mit --close-Zweig, unfortunatly dieser wählt den Zweig der neue Spitze zu werden und daher, bevor es zu anderen Klonen schieben Ich stelle sicher, dass die wirkliche Spitze etwas mehr empfängt Änderungen und andere kommen über diese seltsame Spitze nicht zu verwechseln.

hg up myBranch
hg commit --close-branch

Fall 2:  Zweig wurde in Standard fusioniert

Dieser Fall ist nicht viel anders aus Fall 1 und kann durch Wiedergabe der Schritte für den Fall 1 und zwei zusätzlich diejenigen, gelöst werden.

in diesem Fall ich Update auf die Zweig changeset, das andere tun begehen mit --close-Zweig und fusionieren die neue changeset, die die Spitze in Standard wurde. die letzte Operation erstellt eine neue Spitze, die im Default-Zweig ist - HOORAY

hg up myBranch
hg commit --close-branch
hg up default
hg merge myBranch

Hope, das hilft zukünftige Leser.

BEARBEITEN Autsch, zu spät...Ich weiß lese dein Kommentar, die besagt, dass Sie wollen, halten Sie die Funktion-x änderungsmenge, also das Klonen Ansatz hier nicht funktioniert.

Ich werde immer noch hier die Antwort für es anderen helfen kann.

Wenn Sie möchten, um vollständig loszuwerden der "Funktion von X", weil, zum Beispiel, hat es nicht funktioniert, können Sie Klonen.Dies ist eine Methode erklärt in dem Artikel und es funktioniert auch, und er spricht speziell über die Köpfe.

Soweit ich das verstanden habe, haben Sie diese und wollen, um loszuwerden, die "feature-x" Kopf, ein für alle mal:

@    changeset:   7:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| | o  changeset:   5:013a3e954cfd
| |/   summary:     Closed branch feature-x
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Damit Sie dies tun:

hg clone . ../cleanedrepo --rev 7

Und Sie müssen den folgenden, und Sie werden sehen, dass die Funktion-x ist ja Weg:

@    changeset:   5:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Vielleicht habe ich missverstanden, was Sie wollten, aber bitte nicht die mod runter, ich nahm sich die Zeit, zu reproduzieren Ihren Anwendungsfall :)

Es ist merkwürdig, dass niemand noch die stabilste Weg, um ein Feature Zweige der Schließung vorgeschlagen hat ... Sie können nur kombinieren merge commit mit --close-Zweig-Flag (das heißt commit Dateien modifiziert und in der Nähe der Filiale gleichzeitig):

hg up feature-x
hg merge default
hg ci -m "Merge feature-x and close branch" --close-branch
hg branch default -f

So ist das alles. Kein zusätzlicher Kopf revgraph. Keine zusätzlichen begehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top