Kann Mercurial einen Reverse-Patch machen?

8

Szenario: Ich habe ein unter Mercurial gehaltenes Programm "geerbt", das nur auf meinem System mit bestimmten Änderungen an bestimmten eingecheckten Dateien funktioniert. Ich möchte diese Änderungen nicht überprüfen in.

Meine neueste Lösung besteht darin, eine Mercurial-Patch-Datei (hg diff & gt; Patchdatei) zu erstellen, die diese Optimierungen enthält. Wenn ich meine Änderungen einchecken muss, werde ich den Patch einfach rückgängig machen, festschreiben und den Patch erneut anwenden. (Wenn ich die volle Kontrolle über die Quelle hätte, würde ich all diese kleinen Änderungen in eine einzige Konfigurationsdatei verschieben, die nicht unter Versionskontrolle steht, indem ich eine "Beispiel" -Konfigurationsdatei unter Versionskontrolle setze)

Leider scheint der GNU patch -Befehl das --reverse -Flag zu unterstützen, aber er unterstützt das Multi-Datei-Diff-Format von hg nicht als einzelne Patch-Datei (oder vielleicht auch nur, und ich weiß es einfach nicht) die Schalter dafür?). OTOH, hg hat seinen eigenen patch -Befehl, der das diff anwenden kann, aber das keine reverse -Flags unterstützt.

Also meine Frage ist zweifach:

  1. Wie sollte dies in mercurial getan werden? Sicherlich ist es nicht die einzige Möglichkeit, mit dieser Situation fertig zu werden. Vielleicht hat mercurial ein Plugin oder etwas eingebaut für solche temporären, nicht commitablen Änderungen.
  2. Abgesehen davon, wie Dinge gemacht werden sollten , gibt es irgendeinen Weg, ein solches mercuriales Diff-Patch auf ein mercurielles Repo wie dieses umzukehren? Es gibt andere Situationen, in denen eine solche Funktionalität nützlich wäre.
eternicode 26.11.2010, 20:38
quelle

2 Antworten

19

Mercurials Befehl patch (wirklich import ) unterstützt keine Umkehrung, sondern hg diff . Verwenden Sie dabei --reverse und Sie erhalten einen umgekehrten Patch, den Mercurial anwenden kann.

Was Sie jedoch beschreiben, ist ein sehr funktionierender Vendor-Branch-Style-Workflow, bei dem mercurial andere Funktionen als diff und patch besser unterstützen kann.

Mercurial Queues erfüllt genau das, was Sie wollen.

    
Ry4an Brase 26.11.2010, 21:08
quelle
1

Ich fand, dass --reverse Ansatz nicht funktioniert, wenn Sie Sub-Repos haben. d. h.

%Vor%

. Falls es jemandem hilft, scheint dieses kaum getestete Skript die Aufgabe zu erfüllen:

%Vor%     
Neil McGill 09.02.2018 16:50
quelle

Tags und Links