git-lfs 服务器端与二进制 blob 的客户端管理
git-lfs server-side vs client-side management of binary blobs
如果我跟踪所有 pdf
个文件会发生什么:
git lfs track "*.pdf"
但是另一个没有安装 git-lfs
的开发者推送了一个新的 pdf
文件?它使用文本指针还是完整的二进制文件?服务器负责对二进制 blob 进行版本控制还是客户端?
如果是服务器端,我基本上可以一次跟踪二进制类型,而不用担心其他开发人员将二进制 blob 推送到 git(这是 gitlab
)。
Git lfs 管理客户端的所有内容,当您 pull/push 文件时,它使用 smudge
和 clean
filters。
因此,如果另一个开发人员在不使用 git-lfs 的情况下推送 相同的 pdf 文件,那么您就有麻烦了,因为它会覆盖 pointer git-lfs 用 git 存储库中的实际文件替换(尽管您仍然有历史记录)。
如果该开发人员在没有安装 git-lfs 的情况下推送 new pdf 文件,它将表现得像 git 通常那样,将二进制文件推送到git 回购。
版本控制由指针本身的后端(git 后端而非 lfs)处理,因为它现在只是文本,但客户端负责读取指针并从您在该回购协议中指定的 lfs 端点。git/config.
此行为独立于您正在使用的 lfs 实现 - 目前客户端还not使用 blob 本身发布元数据,因此后端无法管理它。
如果我跟踪所有 pdf
个文件会发生什么:
git lfs track "*.pdf"
但是另一个没有安装 git-lfs
的开发者推送了一个新的 pdf
文件?它使用文本指针还是完整的二进制文件?服务器负责对二进制 blob 进行版本控制还是客户端?
如果是服务器端,我基本上可以一次跟踪二进制类型,而不用担心其他开发人员将二进制 blob 推送到 git(这是 gitlab
)。
Git lfs 管理客户端的所有内容,当您 pull/push 文件时,它使用 smudge
和 clean
filters。
因此,如果另一个开发人员在不使用 git-lfs 的情况下推送 相同的 pdf 文件,那么您就有麻烦了,因为它会覆盖 pointer git-lfs 用 git 存储库中的实际文件替换(尽管您仍然有历史记录)。
如果该开发人员在没有安装 git-lfs 的情况下推送 new pdf 文件,它将表现得像 git 通常那样,将二进制文件推送到git 回购。
版本控制由指针本身的后端(git 后端而非 lfs)处理,因为它现在只是文本,但客户端负责读取指针并从您在该回购协议中指定的 lfs 端点。git/config.
此行为独立于您正在使用的 lfs 实现 - 目前客户端还not使用 blob 本身发布元数据,因此后端无法管理它。