Sie haben eine Handvoll Möglichkeiten:
Lagern Sie die Gegenstände. Dadurch werden die Änderungen gespeichert und aus dem Arbeitsverzeichnis entfernt, damit der Zweig fortgesetzt werden kann. Es wird kein Änderungssatz erstellt.
hg shelve --all --name "UnfinishedChanges"
hg unshelve --name "UnfinishedChanges"
Aktualisieren / Bearbeiten : Möglicherweise müssen neuere Versionen von mercurial verwendet werden
hg shelve -n "UnfinishedChanges"
hg unshelve "UnfinishedChanges"
Sie können immer noch --name
als Alternative zu verwenden -n
, aber Quecksilber scheint nicht --name
mehr zu mögen . Außerdem wird das --all
nicht mehr benötigt und Quecksilber wird tatsächlich darüber ausflippen.
Patch-Warteschlange der Elemente mit mq
. Dies ist in mancher Hinsicht nicht zu unähnlich, um sich zurückzustellen, verhält sich aber anders. Das Endergebnis ist das gleiche, Änderungen werden entfernt und können später optional erneut angewendet werden. Beim Push sind die Patches logische Änderungssätze. Wenn sie gepoppt werden, werden sie an anderer Stelle gespeichert und sind nicht Teil des Änderungssatzverlaufs.
hg qnew "UnfinishedWork"
hg qrefresh
hg qpop
hg qpush "UnfinishedWork"
Übernehmen Sie sie lokal, aktualisieren Sie sie auf den vorherigen Änderungssatz, arbeiten Sie weiter und verwenden Sie anonyme Zweige (oder mehrere Köpfe). Wenn Sie dann die Änderungen wünschen, können Sie Köpfe zusammenführen. Wenn Sie die Änderungen nicht möchten, können Sie strippen den Wechsel - Set.
hg commit -m"Commiting unfinished work in-line."
hg update -r<previous revision>
hg strip -r<revision of temporary commit>
Übertragen Sie sie in einen benannten Zweig. Der Workflow entspricht dann Option 3 - Zusammenführen oder Entfernen, wenn Sie bereit sind.
hg branch "NewBranch"
hg commit -m"Commiting unfinished work to temporary named branch."
hg update <previous branch name>
Persönlich verwende ich Option 3 oder 4, da es mir nichts ausmacht, Änderungssätze zu entfernen oder Teilcode einzuchecken (solange dies nicht irgendwann verschoben wird). Dies kann in Verbindung mit der neuen Phase verwendet werden Material verwendet werden, um Ihre lokalen Änderungssätze bei Bedarf vor anderen Benutzern zu verbergen.
Ich benutze auch die rebase
Befehl auch, um Änderungssätze zu verschieben, um Zusammenführungen zu vermeiden, bei denen eine Zusammenführung dem Verlauf des Codes nichts hinzufügen würde. Zusammenführungen Ich speichere in der Regel für Aktivitäten zwischen wichtigen Zweigen (z. B. Release-Zweigen) oder Aktivitäten aus einem längerlebigen Feature-Zweig. Es gibt auch den histedit
Befehl, den ich zum Komprimieren von Änderungssätzen verwende, bei denen die "Chattiness" von ihnen den Wert verringert.
Patch-Warteschlangen sind ebenfalls ein gängiger Mechanismus, haben jedoch eine Stapelsemantik. Sie pushen und platzieren Patches, aber ein Patch, der sich "unter" einem anderen Patch im Stapel befindet, erfordert, dass der darüber liegende Patch ebenfalls verschoben wird.
Warnung : Wie bei all diesen Optionen ist beim Aufheben der Regale / beim Verschieben / Zusammenführen eine Zusammenführungsauflösung erforderlich, wenn die Dateien seit den temporären Änderungen, die Sie zurückgestellt / in die Warteschlange gestellt / verzweigt haben, mehr Änderungen aufweisen.
--all
wird nicht erkannt. Es ist ein Standardverhalten, alle Änderungen trotzdem zurückzustellen.Persönlich mag ich keine der bisher veröffentlichten Antworten:
shelve
für schnelle Korrekturen (nur um meine nicht festgeschriebenen Änderungen in einen anderen Zweig zu verschieben, wenn ich merke, dass ich am falschen bin). Sie sprechen von Tagen, auf keinen Fall würde ich tagelang etwas zurückstellen.mq
ist zu kompliziert für eine so gewöhnliche SitzungIch denke, der beste Weg ist, einfach Ihre Änderungen festzuschreiben, bevor Sie zum Änderungssatz zurückkehren, bevor Sie diese Änderungen starten und von dort aus arbeiten. Es gibt einige kleinere Probleme, lassen Sie mich veranschaulichen:
Angenommen, Sie haben das Änderungsset A. Dann beginnen Sie mit Ihren Änderungen. An dieser Stelle möchten Sie es für eine Weile beiseite legen. Legen Sie zunächst Ihre Arbeit fest:
Wenn Sie möchten, können Sie ein Lesezeichen hinzufügen, um die spätere Rückkehr zu vereinfachen. Ich erstelle immer Lesezeichen für meine anonymen Zweige.
Kehren Sie vor diesen Änderungen zum Änderungssatz zurück
Von hier aus arbeiten Sie und generieren das Änderungsset C. Jetzt haben Sie 2 Köpfe (B und C) und werden gewarnt, wenn Sie versuchen zu drücken. Sie können nur einen Zweig verschieben, indem Sie den Kopf dieses Zweigs angeben:
Oder Sie können die Phase des
new-stuff
Zweigs in geheim ändern . Geheime Änderungssätze werden nicht gepusht.quelle
mq
ist ein bisschen zu kompliziert für genau diese Situation, aber es hat ein ausreichend breites Anwendungsspektrum, einschließlich dieses, dass es sich lohnt, die Zeit zu investieren, um fließend damit umzugehen.Um lokale nicht festgeschriebene Änderungen beizubehalten, ist es für mich am einfachsten, sie als Patch-Datei zu speichern.
und wenn Sie zum vorherigen Status zurückkehren müssen:
quelle
/tmp
undhg id -i
und es wird auch auf Windoof arbeiten.hg up
wird dort nicht benötigt.Sie können Ihr Repo einfach mehrmals klonen. Ich neige dazu, einen Root-Klon zu haben, dann mehrere Kinder von dort. Beispiel:
Die 4 Kinder werden alle von der Wurzel geklont und drücken / ziehen zur / von der Wurzel. Der Root drückt / zieht dann irgendwo aus dem Master-Repo im Netzwerk / Internet. Die Wurzel fungiert als Ihre Art persönlicher Staging-Bereich.
In Ihrem Fall würden Sie einfach ein neues Repo klonen und mit der Arbeit beginnen. Lassen Sie Ihre "Regal" -Arbeit im anderen Repo in Ruhe. So einfach ist das.
Der einzige Nachteil ist die Speicherplatznutzung, aber wenn dies ein Problem wäre, würden Sie DVCS sowieso nicht verwenden;) Oh, und es verschmutzt Ihre Visual Studio-Liste "Letzte Projekte", aber was solls.
[Folgende Kommentare bearbeiten]: -
Zum Schluss ... was Sie tun, ist völlig in Ordnung und normal. Ich würde behaupten, dass dies die bestmögliche Arbeitsweise ist, wenn Folgendes zutrifft: 1) Es ist nur von kurzer Dauer. 2) Sie müssen nicht mit anderen Entwicklern zusammenarbeiten. 3) Die Änderungen müssen Ihren PC erst nach dem Festschreiben verlassen / Push-Zeit.
quelle