Уменьшение размера хранилища в Mercurial - PullRequest
21 голосов
/ 16 апреля 2011

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

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

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

Ответы [ 4 ]

14 голосов
/ 16 апреля 2011

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

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

6 голосов
/ 30 декабря 2011

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

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

[web]
allow_archive = gz, zip, bz2

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

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

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

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

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

6 голосов
/ 18 апреля 2011

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

2 голосов
/ 29 декабря 2011

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

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

...