Änderungssets entfernen oder ein Mercurial-Repository schrumpfen

8

Wie kann ich ein Mercurial-Repository verkleinern, indem ich alte Changesets lösche?

    
John John Pichler 19.10.2010, 19:29
quelle

2 Antworten

13

Grundsätzlich können Sie nicht. Mercurial hat die feste Regel, dass ein Changeset nur in einem Repository existieren kann, wenn auch jedes seiner Vorgänger-Changesets in diesem Repository existiert.

Sie können jedoch ein neues Repository erstellen, dessen Changesets einer Teilmenge der späteren Changesets in einem anderen Repository entsprechen. Sie werden jedoch nicht die gleichen Changesets sein, weil sie unterschiedliche Hash-Node-IDs haben, und alle Clones aus dem ursprünglichen Repo werden nicht mit dem neuen Repos arbeiten ("nicht verwandte Repositories").

Sie könnten versuchen, ein neues Repo zu erstellen, das nur einige der neueren Changesets in einem anderen Repo widerspiegelt, indem Sie einen Prozess wie diesen verwenden:

%Vor%

Das würde nur die Änderungsmengen mit der Nummer 10 und später in neue Änderungsmengen mit unterschiedlichen Hashes im neuen Repository kopieren. Es wird auch nicht sehr gut mit Merges funktionieren.

    
Ry4an Brase 19.10.2010, 20:11
quelle
11

Siehe die Erweiterung convert (in Mercurial enthalten). Ein einfaches Beispiel ist das folgende:

%Vor%

Dadurch wird ein neues, nicht verwandtes Repository erstellt, das mit der angegebenen Revision beginnt und den vorherigen Verlauf löscht. Es wird auch Zusammenführungen verarbeiten. Alle Benutzer müssen die neue Version des Repository klonen, da Changeset-Hashes sich alle ändern.

Aktivieren Sie die Erweiterung, indem Sie mercurial.ini :

hinzufügen %Vor%

Führen Sie hg help convert für Optionen aus.

    
Mark Tolonen 10.08.2013 19:52
quelle

Tags und Links