Несколько git packfiles - PullRequest
       4

Несколько git packfiles

0 голосов
/ 16 мая 2018

Я хотел бы знать, возможно ли иметь более одного файла пакета (и индекса) для одного и того же хранилища.Какой-то накопительный файл пакета, который содержит только различия, например, с момента последнего нажатия.

Я вижу это в пользовательской реализации, использующей git, и мне хотелось бы знать, является ли это естественным для git.

С уважением

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Когда phd ответил , Git будет читать файлы нескольких пакетов (и файлы индексов пакетов). Тем не менее, обратите внимание, что каждый файл пакета должен быть полностью автономным: базы объектов с удаленными объектами для объекта внутри пакета также должны находиться внутри этого же пакета. (Например, если разделенное представление объекта 0123... говорит, что начинается с 4567... и вносит эти изменения , объект 4567... должен находиться в том же файле пакета.) Это означает, что что много маленьких упаковок, вероятно, будут занимать больше места, чем меньше больших упаковок.

Различия с момента последнего нажатия на самом деле происходят довольно естественно, потому что git push над интеллектуальными протоколами работает, когда два Gits обращаются друг к другу, чтобы увидеть, какие объекты передать. Затем отправитель отправляет тонкий пакет , который намеренно нарушает указанное выше правило - оно будет содержать только обособленные объекты, а не их основы - которые получатель должен «откармливать», используя git index-pack --fix-thin. Если получатель делает это и оставляет на месте откормированную, уже не тонкую упаковку, то теперь у получателя есть N + 1 упаковок, в которых получатель имел N упаковок.

0 голосов
/ 16 мая 2018

Вы можете ограничить файлы пакета установкой размера pack.packSizeLimit . Достигнув этого предела, git создает несколько файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...