Ist es möglich, eine geschlossene Filiale in Mercurial wieder zu eröffnen?

132

Ich verstehe, dass es möglich ist, einen benannten Zweig in Mercurial zu schließen, damit er nicht in der hg branchesListe angezeigt wird:

hg commit --close-branch -m 'close badbranch, this approach never worked'

Ist es möglich, die Filiale später bei Bedarf wieder zu öffnen?

Lóránt Pintér
quelle
13
Sie sollten es einfach ausprobieren. Der beste Weg zu lernen ist zu experimentieren. Da Repositories mit Hg billig sind, sollten Sie einfach wild werden.
Lasse V. Karlsen
1
Schmutziges kleines Geheimnis: Ein "Zweig" in Hg speak ist nur eine andere Art zu sagen "ein mit einem Commit verbundenes Textlabel". Ein "Zweig" kann viele verschiedene Köpfe zu vielen verschiedenen Commits haben, die nicht miteinander verbunden sind.
user2864740

Antworten:

164

Sie können einfach hg updatezum geschlossenen Zweig gehen hg commitund dann einen anderen machen und er wird automatisch wieder geöffnet.

Die closedFlagge wird nur zum Ausfiltern von geschlossenen Zweigen verwenden aus hg branchesund hg headswenn Sie die Verwendung --closedOption - es verhindert nicht von den Ästen.

Tim Delaney
quelle
20
Das Commit führt nur dann zu einer Aktion, wenn tatsächlich etwas festgeschrieben werden muss. Daher müssen Sie möglicherweise eine kostenlose Änderung vornehmen, um dies zu erreichen.
Francis Upton IV
1
Vielen Dank für den Hinweis - ich hatte angenommen, dass Änderungen durch ein Commit impliziert wurden, aber wenn Sie einfach das geschlossene Flag entfernen möchten, können Sie dies natürlich nicht ohne Änderung tun.
Tim Delaney
3
Ein Tag reicht aus, um es festschreibbar zu machen.
Devlord
Dies funktioniert möglicherweise über die Befehlszeilenschnittstelle. Ich habe es noch nicht ausprobiert, aber TortoiseHg lässt Sie nicht auf einen geschlossenen Zweig aktualisieren. Wenn Sie dies versuchen, ist die Schaltfläche Aktualisieren deaktiviert. Damit dies funktioniert, musste ich vor dem Schließen des Änderungssatzes (effektiv des übergeordneten Elements) auf den Zweig aktualisieren und dann auf den geschlossenen Änderungssatz aktualisieren. Seltsamerweise behauptet TortoiseHg, wenn Sie auf das übergeordnete Element aktualisieren, dass das nahe Änderungsset (der Nachkomme) das übergeordnete Element ist. Wie auch immer, es funktioniert einwandfrei, wenn Sie durch die richtigen Reifen springen.
DaveN59
Benutzt es (Kommandozeile über Terminal in PHPSTorm) und funktioniert wie ein Zauber, danke
Mathieu Dierckx
15

Sie können einen Zweig erneut öffnen, indem Sie beim Erstellen des Zweigs das Flag "-f" verwenden.

Nein, dieser Befehl erstellt einen neuen Zweig mit demselben Namen.

Vergiss einfach, dass es geschlossen ist. Wechseln Sie zum Zweig, nehmen Sie die Änderungen vor und legen Sie fest. Es wird automatisch wieder geöffnet. Wenn Sie fertig sind, können Sie es wieder schließen.

Rafael Piccolo
quelle
Ich dachte, dass Mercurial-Zweige im Gegensatz zu Git permanent sind und dass Zweignamen daher nicht wiederverwendet werden können. Was bin ich verwirrend? Sind es mehrere Köpfe für denselben Zweig, über den wir sprechen?
Nate Cook
2

Versuchen Sie Folgendes:

hg pull && hg update branch_name

Nehmen Sie nun eine kleine Änderung an einer der Dateien vor und schreiben Sie sie fest

 hg commit -m "minor change"

dann schieben Sie es

hg push -b . 

Jetzt sollten Sie normal arbeiten können.

Dipendra
quelle
-3

Versuche dies.

Wechseln Sie vor der Ausführung in den geschlossenen Zweig. (hg up closed_branch)

hg st

Berühren Sie a

füge hinzu ein

hg commit -m 'Wiedereröffnung der geschlossenen Filiale'

Dadurch wird der geschlossene Zweig wieder geöffnet.

Geetanjali
quelle
12
Dies fügt dem Repository eine nutzlose leere Datei hinzu, es ist falsch.
Rafael Piccolo