Могу ли я оптимизировать клон Mercurial?
Мой клон Mercurial стал невероятно медленным, предположительно из-за фрагментации на диске. Есть ли способ оптимизировать его?
Очевидный способ - создать новый клон, затем скопировать мой MQ, сохраненные пакеты, hgrc и т. Д. В новый клон и удалить старый. Но кажется, что кто-то мог столкнуться с этой проблемой раньше и сделал расширение, чтобы сделать это?
3 ответа
Я удалил репо и откинулся, и это улучшило производительность.
Если манифест становится особенно большим, это может привести к снижению производительности. У Mercurial есть альтернативный формат репозитория - generaldelta - который часто может привести к гораздо меньшим манифестам.
Вы можете проверить размер вашего манифеста, используя:
ls -lh .hg/store/*manifest*
Чтобы получить максимальное значение от Generaldelta:
Установите Mercurial 2.7.2 или более позднюю версию (2.7.2 включает исправление ошибки в generaldelta, которая могла привести к увеличению размеров манифеста - но есть большая вероятность, что вы не столкнетесь с ошибкой в более ранней версии).
казнить
hg --config format.generaldelta=1 clone --pull orig orig.gd
,
Это может дать некоторое улучшение размера манифеста, но не в полной мере.
- казнить
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.
Отключите антивирусный мониторинг в реальном времени папки, к которой клонировано хранилище, и выполните дефрагментацию. Больше ничего не поделаешь.