Mein Mercurial-Klon ist unglaublich langsam geworden, vermutlich aufgrund der Fragmentierung auf der Festplatte. Gibt es eine Möglichkeit, es zu optimieren?
Die offensichtliche Möglichkeit, einen neuen Klon zu erstellen, kopieren Sie dann meine MQ, gespeicherten Bundles, hgrc usw. in den neuen Klon und löschen den alten. Aber es sieht so aus, als hätte jemand dieses Problem schon früher kennengelernt und eine Erweiterung dafür gemacht?
Ich habe den Repo gelöscht und rekloniert, und das hat die Performance verbessert.
Wenn das Manifest besonders groß wird, kann dies zu einer langsamen Leistung führen. Mercurial hat ein alternatives Repository-Format - generaldelta - das oft zu viel kleineren Manifesten führen kann.
Sie können die Größe Ihres Manifests mit:
überprüfen ls -lh .hg/store/*manifest*
Um den maximalen Wert von generaldelta zu erhalten:
Installieren Sie Mercurial 2.7.2 oder höher (2.7.2 enthält eine Korrektur für einen Fehler in generaldelta, der zu größeren Manifestgrößen führen könnte - aber es besteht eine gute Chance, dass Sie den Fehler nicht mit einer früheren Version bekommen) .
Führen Sie hg --config format.generaldelta=1 clone --pull orig orig.gd
.
Dies kann zu einer Verbesserung der Manifestgröße führen, aber nicht zum vollen Nutzen.
hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
. Der Klon des Klons kann eine viel größere Verbesserung der Manifestgröße ergeben. Dies liegt daran, dass bei der Verwendung eines generaldelta-Repos Dinge neu geordnet werden, um die Manifestgröße zu optimieren.
Als Beispiel für die möglichen Vorteile von generaldelta habe ich kürzlich ein Repo umgeschrieben, das ~ 55000 SVN-Commits (unter Verwendung von hgsubversion) plus ~ 1000 Mercurial-Commits / Merges / Grafts usw. umfasste. Das Manifest im ursprünglichen Repo war ~ 1,4 GB. Das Manifest im ersten Klon war ~ 600 MB. Das Manifest im Klon des Klons war ~ 30 MB.
Es gibt nicht viele Informationen über generaldelta online - es gibt noch viel zu tun, bevor es zum Standardformat werden kann, aber es funktioniert gut für viele Projekte. Die ersten Google-Suchergebnisse enthalten einige Informationen aus der Zeit, als sie erstmals eingeführt wurden, und es gab kürzlich Diskussionen auf der Mercurial-Dev-Mailingliste.
Tags und Links optimization mercurial defragmentation