Si el manifiesto es particularmente grande, puede dar lugar a un rendimiento lento. Mercurial tiene un formato de repositorio alternativo - generaldelta - que a menudo puede dar como resultado manifiestos mucho más pequeños.
Puede comprobar el tamaño de su manifiesta usando:
ls -lh .hg/store/*manifest*
Para obtener el máximo valor de generaldelta:
Instalar Mercurial 2.7.2 o posterior (2.7.2 incluye una se corrige un error en generaldelta que podría dar como resultado tamaños de manifiesto más grandes, pero hay una gran probabilidad de que no le pegues al error con una versión anterior).
Ejecutar hg --config format.generaldelta=1 clone --pull orig orig.gd
.
Esto puede mejorar el tamaño del manifiesto, pero no todos los beneficios.
- Ejecutar
hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
.
El clon del clon puede proporcionar una mejora mucho mayor en el tamaño del manifiesto. Esto se debe a que al extraer de un repositorio generaldelta, las cosas se reordenarán para optimizar el tamaño del manifiesto.
Como un ejemplo de los beneficios potenciales de generaldelta, recientemente convertí un repositorio que era ~ 55000 confirmaciones de SVN (extraído mediante hgsubversión) más ~ 1000 commit/merges/injertos de Mercurial, etc. El manifiesto en el repositorio original era ~ 1.4GB. El manifiesto en el primer clon era ~ 600MB. El manifiesto en el clon del clon era ~ 30MB.
No hay mucha información sobre generaldelta en línea, todavía hay trabajo por hacer antes de que pueda convertirse en el formato predeterminado, pero funciona bien para muchos proyectos. Los primeros resultados de búsqueda de Google contienen información desde el momento en que se introdujo por primera vez, y hubo una discusión reciente sobre la lista de correo de mercurial-dev.
Por lo que sé sobre Mercurial, no debería haber nada que Mercurial haga que sea lento en lo que respecta a la fragmentación, etc. ¿Ha intentado ejecutar un desfragmentador de disco normal en su disco? Además, ¿qué tipo de operaciones son lentas, y qué lentas, etc.? –
hg qref es lo realmente lento. Tarda quizás 50 segundos en un repositorio con 70000 commits. Estoy de acuerdo en que no es un problema específico mercurial (aunque creo que los patrones de acceso mercurial lo exacerban), pero Mac no tiene un desfragmentador incorporado (AFAICT). –