... also habe mich auf die einfachen Sachen mit Mercurial gewöhnt ( add
, commit
, diff
) und über die .hgignore Datei herausgefunden (yay!) und habe den Dreh raus zu schaffen und das Umschalten zwischen Zweigen (bekommen branch
, update -C
).
Ich habe jedoch zwei Hauptfragen:
Wenn ich in Zweig "Zweig1" bin und einige, aber nicht alle Änderungen von Zweig "Zweig2" übernehmen möchte, wie würde ich das tun? Insbesondere, wenn sich alle Änderungen in einem Unterverzeichnis befinden. (Ich denke, ich könnte einfach das gesamte Repository klonen und dann ein Tool zum Zusammenführen von Verzeichnissen wie Beyond Compare verwenden, um meine Änderungen auszuwählen. Es scheint jedoch eine Möglichkeit zu geben, die Änderungen in einer Datei oder einem Verzeichnis zu isolieren.)
Das Wechseln zwischen Zweigen mit
update -C
scheint so einfach zu sein, dass ich mich frage, warum ich mich die Mühe machen würde, es zu verwendenclone
. Ich kann mir nur einige Gründe vorstellen (siehe unten) - gibt es noch andere Gründe, die mir fehlen?ein. wenn ich auf zwei Versionen / Zweige gleichzeitig reagieren muss (z. B. einen Leistungsmetrikdifferenz)
b. für eine Sicherung (
clone
das Repository auf einem Netzlaufwerk an einem physisch anderen Ort)c. um die Auswahl zu treffen und auszuwählen, wie ich oben erwähnt habe.
Bei Frage 1 müssen Sie etwas klarer darüber sein, was Sie unter "Änderungen" verstehen. Welche davon meinst du:
Wenn Sie Punkt 1 meinen, sollten Sie sich die Transplant- Erweiterung ansehen , insbesondere die Idee, ein paar Änderungssätze auszuwählen.
Wenn Sie Punkt 2 meinen, würden Sie Folgendes tun:
hg revert -r <branch you want to merge> --include <files to update>
diese Option , um den Inhalt dieser Dateien so zu ändern, wie er sich im anderen Zweig befindet.hg commit
diese Option, um diese Änderungen als neuen Änderungssatz in den Zweig zu übernehmen.Was Frage 2 betrifft, verwende ich niemals Repository-Klone, um mich selbst zu verzweigen, daher weiß ich es nicht. Ich verwende benannte Zweige oder anonyme Zweige (manchmal mit Lesezeichen).
quelle
Ich habe noch eine andere Option für Sie: Quecksilberwarteschlangen.
Die Idee ist, einen Stapel Patches (keine Commits, "echte" Patches) auf Ihrem aktuellen Arbeitsverzeichnis zu haben. Anschließend können Sie die angewendeten Patches hinzufügen oder entfernen, eines hinzufügen, entfernen, ein weiteres hinzufügen usw. Ein einzelnes Patch oder eine Teilmenge davon wird zu einer neuen "Funktion", wie Sie es wahrscheinlich mit Zweigen tun möchten. Danach können Sie den Patch wie gewohnt anwenden (da es sich um eine Änderung handelt). Zweige sind wahrscheinlich nützlicher, wenn Sie mit jemand anderem zusammenarbeiten ...?
quelle