Gelegentlich übertrage ich etwas Code in das Repository, füge einen Kommentar/eine Zusammenfassung hinzu, lese dann die Zusammenfassung und stelle fest, dass ich einen Fehler gemacht habe oder etwas mehr Informationen hätte einfügen sollen. Ist es möglich, die Zusammenfassung nach einer Übertragung in TortoiseHg zu bearbeiten? Ich benutze Version 1.1
Antworten
Zu viele Anzeigen?Verwenden Sie Mercurial-Warteschlangen, um die Änderungssätze in Patches umzuwandeln, entfernen Sie dann diese Änderungssätze und wenden Sie die Patches wieder auf Ihr Repository an.
Wenn die Patches erstellt werden, werden sie im Ordner .hg/patches in Ihrem Repository gespeichert, und Sie können diese bearbeiten (einschließlich der Übergabemeldung), bevor Sie sie erneut anwenden.
- Aktivieren Sie die Mercurial Queues Erweiterungen (MQ)
- Klicken Sie mit der rechten Maustaste und wählen Sie Revision in MQ importieren für jeden Änderungssatz, um sie in Patches in der Patch-Warteschlange umzuwandeln
- Aktivieren Sie das Fenster der Patch-Warteschlange über das Menü "Ansicht
- Wählen Sie die Alle Patches aufheben Pfeil in der Patch-Warteschlange, um die Änderungssätze zu entfernen
- Bearbeiten Sie die Patch-Dateien in .hg/patches
- Wählen Sie Alle Patches anwenden
- Klicken Sie mit der rechten Maustaste auf den Patch und wählen Sie Angewandtes Finish um die Warteschlange zu schließen
Wenn dies die letzte Übergabe war, können Sie die Schaltfläche "Rückgängig" im Übergabedialog drücken (es ist eine Schnittstelle zu hg rollback
) und dann die gleichen Dateien mit einer neuen Nachricht erneut übertragen. Wenn dies eine Übergabe in der Mitte des Baums ist, müssen Sie mq
Erweiterung, um alle späteren Übertragungen zu löschen und sie erneut anzuwenden. Und wenn der Commit mit einer falschen Zusammenfassung in ein öffentliches Repo gepusht wird, sollten Sie das akzeptieren und damit leben, denn Sie sollten veröffentlichte Commits nicht ändern.
Phil - Ich werde die gleiche Antwort geben, die ich gerade auf diese Frage (nach Ihrer Frage):
Ein geeigneter Weg, dies zu tun, ist die Verwendung von histedit. Mit Histedit können Sie Ihre früheren Übertragungen entfernen, ändern, kombinieren oder anderweitig bearbeiten.
Histedit wird nicht mit Mercurial ausgeliefert und kann nicht mit TortoiseHg verwendet werden, aber die Verwendung auf der Kommandozeile ist sehr einfach:
> hg histedit <rev>
wo sich die Revision befindet, deren Kommentar Sie ändern möchten. Histedit erstellt eine Liste der Änderungssätze und zeigt Ihnen deren SHA1 an. Neben jedem Änderungssatz steht ein Wort, das angibt, was Histedit mit jedem Änderungssatz tun wird, sobald Sie das Textfenster schließen. Ersetzen Sie neben dem Änderungssatz, den Sie ändern möchten, "pick" durch "edit". Schließen Sie das Textfenster und geben Sie dann diesen Befehl ein:
> hg histedit --continue
und es erscheint ein weiteres Textfenster mit der Protokollmeldung. Ändern Sie die Meldung nach Ihren Wünschen. Sie können dies für mehrere Änderungssätze in einem Durchgang tun, vorausgesetzt die Dateien wurden noch nicht freigegeben. Dies ist eine ziemlich triviale Anwendung von histedit, kompliziertere Anwendungen beinhalten das Kombinieren von Commits oder das Entfernen eines Teils eines Commits.
Nach den Antworten zu urteilen lautet die zusammenfassende Antwort also,
Ja ist es möglich, dass die letzte Aktion die Übergabe des fraglichen Änderungssatzes war (in diesem Fall führen Sie die Rollback Befehl), und
Non ist es nicht möglich, nicht "out of the box" (ohne die mq-Erweiterung und eine Menge Gruntwork), wenn das betreffende Changeset bereits gepusht wurde oder nachfolgende Check-Ins vorgenommen wurden.
Ich poste diese Antwort, weil die anderen Antworten das "Nein" nicht zuließen, sondern nur das "Wenn". :) Es steht Ihnen frei, die Antwort abzulehnen, ich wollte nur die Schlussfolgerungen hier klarstellen.
Hg 2.2 hat gerade die git
-wie --amend
Option. (Siehe die hg 2.2 Veröffentlichungshinweise .)
Sie können dies also über die Befehlszeile tun:
hg commit --amend
Siehe auch Mercurial: Wie kann man den letzten Commit ändern?
Ich habe noch nicht herausgefunden, wie man das in TortoiseHg macht.
- See previous answers
- Weitere Antworten anzeigen