Сжатие Mercurial ревизии истории - PullRequest
1 голос
/ 18 мая 2011

У нас есть 2700+ ревизий, и загрузка Mercurial занимает хорошие 30-45 секунд при слиянии, толчке или чем-то еще с TortoiseHg.Мне интересно, есть ли другой способ, кроме прямого создания нового хранилища, чтобы очистить историю изменений.Скажем, отрежьте файлы под редакцией 2400 или около того.

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Не ответ на ваш вопрос, но:

Может помочь уменьшение "размера пакета журнала" до 100 (по умолчанию 500) в настройках.

Наше репо с 2300+ оборотами загружается за 2-3 секунды (с моего SAS-диска со скоростью 15 000 об / мин, но не говоря уже об этом), так что я не думаю, что ваша проблема в том, что на самом деле много оборотов. Там намного больше репо. :)

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

2 голосов
/ 18 мая 2011

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

pick c561b4e977df Добавить бета
pick 030b686bedc4 Добавить гамму
pick 7c2fd3b9020cДобавить delta

Редактировать историю между c561b4e977df и 7c2fd3b9020c

Команды:
p, выбрать = использовать фиксацию
e, изменить = использовать фиксацию, но остановиться для внесения изменений
f, fold = использовать коммит, но свернуть в предыдущий коммит
d, drop = удалить коммит из истории

Изменение pick на fold для определенного набора изменений всписок выше свернет его в предыдущую ревизию.Это даст вам возможность разрешать неудачные слияния и вводить новое сообщение о фиксации.

ПРЕДУПРЕЖДЕНИЕ:

Использование histedit приведет к изменению истории репозитория, включая идентификаторы хешей, что вызовет проблемы, если тольковы перезапускаете каждого разработчика с новым клоном репозитория после внесения изменений.Кроме того, вам, вероятно, потребуется ограничить свой набор изменений для наборов изменений с одним родителем (т. Е. Наборов изменений без слияния).

...