多个git packfiles

时间:2018-05-16 14:01:40

标签: git

我想知道是否可以为同一个存储库提供多个pack文件(和索引)。某种累积包文件,它只包含自上次推送以来的差异。

我在使用git的自定义实现中看到了这一点,我想知道它是否是git自然的东西。

亲切的问候

2 个答案:

答案 0 :(得分:2)

作为phd answered,Git 读取多个包文件(并打包索引文件)。但请注意,每个包文件都必须是完全独立的:包装内对象的deltified对象的基础也必须在同一个包中。 (例如,如果对象#!/bin/bash # Pick up arguments and put in array args=( "$@" ) # Remove last argument ("pnm:-") unset 'args[${#args[@]}-1]' # Add our "-auto-level" parameter in before last item args+=("-auto-level") # Re-append "pnm:-" args+=("pnm:-") # Debug output to /tmp/a echo "BEFORE: $@" >> /tmp/a echo "AFTER: ${args[@]}" >> /tmp/a # Call real "convert" with modified parameters /usr/local/bin/magick "${args[@]}" 的分层表示形式0123...开头并进行这些更改,则对象4567...必须位于相同 pack file。)这意味着许多小包可能比较少的大包使用更多的空间。

自上次推送以来的差异实际上相当自然地发生,因为智能协议上的4567...通过使两个Gits相反来查看要传输的对象。发件人然后发送瘦包,故意违反上述规则 - 它将只包含已经完成的对象,而不包含其基础 - 接收者必须使用git push“加肥”。如果接收器这样做,并留下肥胖的,不再薄的包,接收器现在有N + 1包,接收器曾经有N包。

答案 1 :(得分:1)

您可以按尺寸设置pack.packSizeLimit限制打包文件。达到此限制git会创建多个packfiles。