Существует ли способ ограничить объем памяти, который “использует gc мерзавца”?

Я размещаю мерзавца repo на общем хосте. Мой repo обязательно имеет несколько очень больших файлов в нем и каждый раз, когда я пытаюсь выполнить "gc мерзавца" на repo теперь, мой процесс уничтожается общим поставщиком услуг хостинга для использования слишком большой памяти. Существует ли способ ограничить объем памяти, который может использовать gc мерзавца? Моя надежда состояла бы в том, что это может обменять использование памяти на скорость и просто взять немного дольше, чтобы сделать ее работу.

32
задан Andrew Grimm 11 October 2011 в 00:30
поделиться

2 ответа

Да, взгляните на страницу справки для git config и посмотрите параметры pack. * , в частности pack.depth , pack.window , pack.windowMemory и pack.deltaCacheSize .

Это не совсем точный размер, так как git должен отображать каждый объект в памяти, поэтому один очень большой объект может вызвать большое использование памяти независимо от настроек окна и дельта-кеша.

Возможно, вам больше повезет с локальной упаковкой и передачей файлов пакетов на удаленную сторону «вручную», добавив файлы .keep , чтобы удаленный git никогда не пытался полностью перепаковать все.

15
ответ дан 27 November 2019 в 20:23
поделиться

Вы можете отключить дельта-атрибут, чтобы отключить дельта-сжатие только для больших двоичных объектов этих путей:

В foo / .git / info / attributes (или foo.git / info / attributes , если это чистый репозиторий) (см. дельта-запись в gitattributes и см. gitignore для синтаксиса шаблона):

/large_file_dir/* -delta
*.psd -delta
/data/*.iso -delta
/some/big/file -delta
another/file/that/is/large -delta

Это не повлияет на клоны репозиторий. Чтобы повлиять на другие репозитории (например, клоны), поместите атрибуты в файл .gitattributes вместо (или в дополнение) к файлу info / attributes .

7
ответ дан 27 November 2019 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: