Для вашего первого вопроса я провел эксперимент:
- Создал репо с большим файлом.
hg update null
- Удалено
.hg\largefiles
hg update
Вернулись большие файлы! Оказывается, по крайней мере, в Windows большие файлы также кэшируются в %UserProfile%\AppData\Local\largefiles
. Поскольку это была моя единственная база данных с большими файлами, она содержала только один мой большой файл, поэтому я удалил и его. Этот кеш содержит большие файлы из нескольких локальных баз данных с поддержкой больших файлов, поэтому с ним нужно быть осторожным. Если кажется расточительным иметь две копии, оказывается, если локальные базы данных находятся на том же диске, что и %UserProfile%
, то они жестко связаны. В моей системе два диска, и оказывается, что если база данных находится на другом диске, она все равно копируется в папку AppData
, но не жестко связана и удваивает использование вашего диска.
Как только все копии большого файла были удалены, hg update
дал:
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
getting changed largefiles
largefile.dat: can't get file locally
(no default or default-push path set in hgrc)
0 largefiles updated, 0 removed
Затем я удалил [extensions], largefiles=
из .hg\hgrc
, чтобы отключить расширение. На данный момент репозиторий работал нормально, но все еще имел каталог .hglf
с хэшами в наборах изменений, которые раньше содержали большие файлы. поэтому ответ на ваш второй вопрос - да, вы можете проверить старый код.
Для вашего третьего вопроса, чтобы устранить все следы больших файлов и хэшей, создайте файл с:
exclude .hglf
и запустите:
hg convert --filemap <file> <srcrepo> <destrepo>
Затем вашим пользователям придется клонировать этот новый измененный репозиторий, потому что convert изменяет наборы изменений, и новая база данных не будет связана со старой.
person
Mark Tolonen
schedule
22.01.2013