Могу ли я оптимизировать клон Mercurial? - PullRequest
8 голосов
/ 08 июля 2011

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

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

Ответы [ 3 ]

7 голосов
/ 10 октября 2013

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

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

ls -lh .hg/store/*manifest*

Toполучить максимальное значение из 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.4GB.Манифест в первом клоне был ~ 600 МБ.Манифест в клоне клона был ~ 30 МБ.

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

0 голосов
/ 12 июля 2011

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

0 голосов
/ 08 июля 2011

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

...