Mercurial merges mit nicht eingecheckten Änderungen
Machmal nervt Mercurial wirklich und man wünscht sich einen staging Bereich für nicht eingecheckte Änderungen wie bei Git. Es kann nämlich durchaus passieren, dass man ein paar Changesets aus einem entfernten Repository holen und einen merge bzw. rebase machen muss, obwohl die eigenen Änderungen noch nicht eingecheckt sind.
Mercurial erlaubt aber genau dies nicht, dann kommt es nämlich zu folgender Meldung:
% hg merge
abort: outstanding uncommitted changes
Es gibt aber einen relativ einfachen Weg, um das Problem zu umgehen. Man exportiert temporär die eigenen Änderungen in einen Patch und macht diese dann im Repository rückgängig:
% hg diff > /tmp/local_changes.diff
% hg revert -a
Jetzt kann der eigentliche merge bzw. rebase ausgeführt werden, da das lokale Verzeichnis wieder sauber ist. Danach können die eigenen Sachen wieder importiert werden:
% hg import --no-commit /tmp/local_changes.diff
Es ist jetzt nicht der schönste Weg, aber es funktioniert wenigstens…
Mehr

