2016-11-09 5 views
1

Ich löschte versehentlich ein Changeset in meinem Merkur-Repository und entfernte viel zu viele Changesets. Ich wusste, dass es Nachkommen entfernen würde, aber aus irgendeinem Grund nahm ich an, dass es nur Nachkommen in dem Zweig oder den Zweigen entfernen würde, die von einem Zweig gestartet wurden, dessen Nachkommen abzweigten. Stattdessen löschte es ALLE Changesets von jedem Zweig, der nach der entfernten Revision festgeschrieben wurde.Wie können abgestreifte Changesets wiederhergestellt werden

Die mercurial documentation besagt Folgendes:

strip kein Geschichts-Schreibvorgang und kann auf öffentlichen Change verwendet werden

Da die Differenzmengen irgendwo existieren, da es nicht eine Geschichte umschreiben Operation, wie kann ich sie dann wiederherstellen?

Antwort

2

Mercurial sichert alle Backup-Bundles von abgestreiften Patches (dh: strip, ändern, etc) in einem Ordner namens "strip-backup" innerhalb Ihres Repository. Dieses Verzeichnis befindet sich unter <repository-root>/.hg/strip-backup.

In diesem Ordner sehen Sie Sicherungen aller Änderungen, aber sie haben Hashes als Namen im Format #hash # [- ändern] -backup.hg. Das Sortieren in chronologischer Reihenfolge kann Ihnen helfen, den richtigen zu finden, vorausgesetzt, Sie wissen, wann Sie den Bad Strip-Vorgang ausgeführt haben. Andernfalls sollten Sie alle Pakete in umgekehrter chronologischer Reihenfolge wiederherstellen, bis die korrekten Änderungssätze wiederhergestellt wurden.

Der Befehl der Wiederherstellungsvorgang durchzuführen ist:

hg unbundle <path-to-bundle-file> 
hg update 
Verwandte Themen