【问题标题】:git archive from a remote downloads LFS file pointers only, not actual LFS files来自远程的 git 存档仅下载 LFS 文件指针,而不是实际的 LFS 文件
【发布时间】:2020-06-07 11:23:58
【问题描述】:

我注意到“git 存档”在从本地存储库存档时支持 LFS,但在从远程存档时不支持。这是我使用的 git 命令

git archive -o latest.zip HEAD
git archive -o latest.zip HEAD --remote=<remote git repo>

第一个在本地 repo 上运行,有效。第二个没有。归档中只包含指向 LFS 文件的指针,而不是实际的 LFS 文件。我做错了吗?

【问题讨论】:

    标签: git git-lfs


    【解决方案1】:

    Git LFS 的工作方式是在本地存储库中设置涂抹/清洁过滤器,通常使用过滤器进程。即使指定文件使用 LFS 过滤器,它也不会生效,除非配置有启用过滤器进程的选项。

    很可能在您的本地系统上,您安装并配置了 Git LFS,而在远程系统上,您没有。由于远程系统缺少配置,git archive 进程没有调用 Git LFS 二进制文件。

    即使您已正确设置配置,如果对象尚未存储在存储库中,您也需要某种方式让远程端获取对象。如果是,Git LFS 二进制文件将使用它们,但如果你不是,你将需要某种方式来验证你在该过程中使用的任何 LFS 服务器。这将需要 Git 服务器可以访问的功能凭据,以允许它访问 LFS 服务器,这可能会很棘手。

    Git LFS 二进制文件通常不适合非交互式使用,因为它可以提示输入凭据,因此您可能需要更直接地从 LFS 存储中获取的自定义过滤器。

    【讨论】:

    • bk224,我知道远程系统已为 LFS 正确配置,因为当我转到 gitlab ui 时,我可以看到它们被标记为 LFS。此外,当我进行克隆时,它们被作为实际文件获取,而不仅仅是作为指针。从您的回复中我不明白的是 Git LFS 二进制文件在执行 git 存档时没有使用它们。我如何验证确实如此?
    • 问题是您使用--remote 指定的远程存储库是否具有实际的git-lfs 二进制文件并配置为使用它。如果那是 GitLab 服务器,那么它几乎肯定不是,因为服务器 (a) 没有二进制文件,并且 (b) 没有配置为使用它进行身份验证。它显示在 UI 中的事实是无关紧要的,因为几乎可以肯定它不使用二进制文件。
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2022-01-15
    • 2020-01-03
    相关资源
    最近更新 更多