Подтвердить что ты не робот

Уменьшение размера хранилища в Mercurial

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете использовать выделенный клон удаленного репо на вашем компьютере в качестве кеша для операций клонирования. Таким образом, вам не нужно переводить всю репо по сети каждый раз, но только те части, которые еще не существуют.

Ответ 3

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

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

[web]
allow_archive = gz, zip, bz2

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

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

Замените номер ревизии на имя ветки, которое он изменил, hash you want. Загрузите файл с помощью wget, curl или аналогичного инструмента.

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

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

Ответ 4

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

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