Уменьшение размера репозитория в Mercurial

поскольку моя команда работает над данным проектом с источником в репозитории Mercurial, репозиторий, очевидно, увеличивается в размере. Таким образом, клонирование репозитория по сети становится все медленнее и медленнее.

существуют ли какие-либо методы, которые используются для сокращения старых коммитов или уменьшения размера репо, чтобы сделать операцию клонирования быстрее по медленной сети?

(мы используем TortoiseHg в качестве клиента Mercurial, но это (я предполагаю) не должно разница в решении этой проблемы.)

4 ответов


первый вариант:использовать convert расширение для разложения репозитория в группу небольших хранилищ.

скажем, у вас есть репозиторий, который эволюционировал, чтобы содержать множество проектов (папок). И вы решили, что вам будет лучше, если каждый проект (папка) будет отдельным репозиторием. Вы можете использовать


вы можете использовать выделенный клон удаленного РЕПО на вашем компьютере в качестве кэша для операций клонирования. Поэтому вам не нужно каждый раз переносить все РЕПО через сеть, а только те части, которые еще не существуют.


Если вам нужны только файлы, в данной редакции, но не нужно изучать историю и делать новые коммиты, а затем скачать снимок можно быстрее.

нормальный hgweb CGI-скрипт может предоставить файл zip или tar для любой ревизии. Архивы создаются на лету. Вам нужно только добавить

[web]
allow_archive = gz, zip, bz2

в файле конфигурации. Затем вы можете найти архивы по URL вида

http://server.com/repo/archive/rev.zip

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

эта стратегия окупается только при очень больших по сравнению с размерами одного набора.

это может быть так, если репозиторий содержит большие файлы, которые часто меняются. The расширение largefiles может быть альтернативой здесь: он позволяет загружать только файлы, необходимые для проверки ревизии. Таким образом, вы избегаете загрузка истории для больших файлов и сохранение значительного объема пропускной способности.


иногда такие проблемы могут быть вызваны, если в вашем репозитории есть большие двоичные файлы. Любые обновления к ним, как правило, вызывают большие различия и делают размер более резко, чем обычно.

Если это относится к вам, возможно, стоит посмотреть на расширение больших файлов распространяется с Mercurial 2.0. Я не использовал его лично, и похоже, что у него все еще есть некоторые красные края, но если включает команду lfconvert, который преобразует РЕПО вы. Затем вы можете попробовать, чтобы увидеть, клонирует ли он быстрее.