Ich glaube nicht, dass unverbindliche Änderungen an sich eine schlechte Sache sind. Sie verweisen auf eine "Unfähigkeit, mit ihnen zusammenzuführen". Wenn Sie eine nicht festgeschriebene Änderung an einer Datei vorgenommen haben und eine Änderung an dieser Datei abrufen und aktualisieren, startet Mercurial den Zusammenführungsprozess so, als hätten Sie ihn festgeschrieben und danach gefragt eine Zusammenführung. Meinten Sie etwas anderes?
Für lokale Änderungen, die Sie noch nicht mit anderen Entwicklern teilen möchten, haben Sie zwei Ansätze. Die erste besteht darin, die Änderungen in Ihrer Arbeitskopie beizubehalten, aber nicht zu verschieben, und die andere darin, sie aus der Arbeitskopie herauszulegen. Welche Sie auswählen, hängt davon ab, ob Sie diese Änderungen während der Arbeit zur Verfügung haben möchten.
Wenn Sie sie in der Arbeitskopie behalten, funktionieren eingehende Änderungen einwandfrei. Sie müssen also nur vermeiden, ausgehende Änderungen zu erstellen, und das bedeutet, dass Sie sie nicht festschreiben müssen. Wenn die Dateien neu sind, ist das einfach - nur nicht hg add
. Wenn sie bereits verfolgt werden, können Sie sie ausdrücklich von Commits mit ausschließen hg commit --exclude foo.txt
. Wenn Sie eine große Anzahl von Dateien ausschließen müssen oder diese von vielen Commits ausschließen möchten (z. B. für eine dauerhafte Änderung einer lokalen Konfigurationsdatei), sehen Sie sich die Ausschlusserweiterung an .
Wenn Sie bereit sind, die Änderungen beiseite zu schieben, haben Sie andere Optionen. Am einfachsten ist es, hg diff
die Dateien zu verwenden, um einen Patch zu erstellen, der sie beschreibt, den Sie an einem sicheren Ort aufbewahren, und hg patch --no-commit
diesen Patch dann erneut anzuwenden, wenn Sie die Änderungen zurückhaben möchten. Sie können dies reibungsloser gestalten, indem Sie die Regalerweiterung , die Dachbodenerweiterung oder einen anderen Verwandten installieren . Sie können auch die Warteschlangenerweiterung verwenden , aber dazu wird ein Vorschlaghammer verwendet, um eine Nuss zu knacken. Sie können die Änderungen sogar einfach festschreiben, dann auf das übergeordnete Element zurücksetzen und dort andere Arbeiten festschreiben, wobei die Änderungen in einem stumpfen anonymen Zweig verbleiben - hg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')
obwohl dies möglicherweise einfacher manuell durchzuführen ist!). Sie müssten dann jedoch darauf achten, diesen Änderungssatz nicht zu verschieben.