Поиск больших файлов в Mercurial Repository

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

Я собираюсь использовать hg convert для создания нового репозитория меньшего размера. Я просто еще не уверен, какие файлы влияют на размер репозитория. Это могут быть уже удаленные файлы.

Как лучше всего найти их в истории репозитория? Сделано более 20 000 коммитов. Я думаю о сценарии PowerShell, но я не уверен, что лучше всего сделать.


person Michael    schedule 14.12.2015    source источник


Ответы (1)


Отметьте hg help fileset. Что-то типа

hg files "set:size('>1M')"

должен сделать трюк за вас. Возможно, вам придется работать со всеми ревизиями, хотя он работает только с одной ревизией. В bash я бы попробовал что-то вроде

for i in `hg log -r"all()" "set:size('>400k')" --template="{rev}\n"`; do hg files -r$i "set:size('>400k')"; done | sort | uniq

может сделать свое дело. Возможно, его можно оптимизировать, поскольку в настоящее время он немного дублируется и может работать довольно долго; в репозитории OpenTTD с 22000 коммитов на моем ноутбуке потребовалось всего 10 минут.

(Также проверьте hg help на templates, files и grep)

person planetmaker    schedule 14.12.2015
comment
Спасибо, это творит чудеса. Я использую окна. Для полноты сценария powershell будет hg log -r"all()" "set:size('>1024k')" --template="{rev}\n" | Foreach { hg files -r $_ "set:size('>1024k')" >> results.txt; get-content results.txt | sort | get-unique > results2.txt; Remove-Item results.txt; Move-Item results2.txt results.txt }, а файл bat будет for /F %i in ('hg log -r"all()" "set:size('>1024k')" --template="{rev}\n"') DO hg files -r %i "set:size('>1024k')" >> results.txt (хотя он не сортирует / фильтрует) - person Michael; 15.12.2015