Могу ли я оптимизировать клон Mercurial?

Мой клон Mercurial стал невероятно медленным, предположительно из-за фрагментации на диске. Есть ли способ оптимизировать его?

Очевидный способ - создать новый клон, затем скопировать мой MQ, сохраненные пакеты, hgrc и т. Д. В новый клон и удалить старый. Но кажется, что кто-то мог столкнуться с этой проблемой раньше и сделал расширение, чтобы сделать это?

3 ответа

Решение

Я удалил репо и откинулся, и это улучшило производительность.

Если манифест становится особенно большим, это может привести к снижению производительности. У Mercurial есть альтернативный формат репозитория - generaldelta - который часто может привести к гораздо меньшим манифестам.

Вы можете проверить размер вашего манифеста, используя:

ls -lh .hg/store/*manifest*

Чтобы получить максимальное значение от Generaldelta:

  1. Установите Mercurial 2.7.2 или более позднюю версию (2.7.2 включает исправление ошибки в generaldelta, которая могла привести к увеличению размеров манифеста - но есть большая вероятность, что вы не столкнетесь с ошибкой в ​​более ранней версии).

  2. казнить hg --config format.generaldelta=1 clone --pull orig orig.gd,

Это может дать некоторое улучшение размера манифеста, но не в полной мере.

  1. казнить hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd,

Клон клона может дать гораздо большее улучшение размера манифеста. Это связано с тем, что при извлечении из репозитория Generaldelta вещи будут переупорядочены для оптимизации размера манифеста.

В качестве примера потенциальных преимуществ Generaldelta я недавно преобразовал репо с ~55000 SVN-коммитами (вытащил с помощью hgsubversion) плюс ~1000 Mercurial-коммитов / слияний / трансплантатов и т. Д. Манифест в исходном репо был ~ 1,4 ГБ. Манифест в первом клоне был ~600 МБ. Манифест в клоне клона был ~30 МБ.

О Generaldelta в Интернете не так много информации - еще предстоит проделать определенную работу, прежде чем он станет стандартным форматом, но он хорошо работает для многих проектов. Первые несколько результатов поиска в Google содержат некоторую информацию о том, когда они были впервые представлены, и недавно было несколько обсуждений в списке рассылки mercurial-dev.

Отключите антивирусный мониторинг в реальном времени папки, к которой клонировано хранилище, и выполните дефрагментацию. Больше ничего не поделаешь.

Другие вопросы по тегам