Swift 包管理器不能与 Git LFS 一起使用

问题描述 投票:0回答:1

我提供了配置了LFS的私有库git存储库。我已通过添加 Package.swift 文件将该库转换为 SwiftSPM 兼容。当我通过拖放将其添加到我的应用程序项目时,我的包在本地工作正常。但如果我尝试从 Xcode 添加为 swift 包管理器,我会收到以下错误

无法查看修订版“cdd1352f7a46a3eb6ea2f087da5fd4e5fcc5254c”:

传输“f2f56588141b3b3fa7bb8c136079b5b38cf8615441dde51d90aa4fffdc8db342”时出错:[0]远程丢失对象f2f56588141b3b3fa7bb8c136079b5b38cf8615441dde51d90a a4fffdc8db342

我浏览了几个链接

  1. https://developer.apple.com/forums/thread/676670
  2. Xcode 11 swift 包管理器无法解析包
  3. https://forums.swift.org/t/swiftpm-with-git-lfs/42396/4

但对我来说没有任何作用:这是我的设置详细信息

Xcode 12.5 git-lfs/2.13.3(GitHub;darwin arm64;go 1.16.2) git 版本 2.30.1 (Apple Git-130)

任何帮助将不胜感激。谢谢!!

ios swift git git-lfs swift-package-manager
1个回答
0
投票

我为那些想要同时使用 LFS 和 SPM 的人找到了解决这个问题的方法,而不需要让他们的包使用者添加安装/链接 LFS 的步骤。注意:只有当 LFS 中的文件是可选的并且不需要作为包构建的一部分时,这才有效。就我而言,我们将其用于快照测试 PNG(仅需要运行测试,不需要构建/使用包)。

基本上,您可以将 LFS 设为可选,并且仅为包开发人员配置它,而不是包消费者。

步骤:

  • .gitattributes
    文件中删除 lfs 配置行并签入此删除。确保此更改使其进入 main/master,因为 SPM 检查我们的第一个更改,并且 LFS 配置将失败。
  • 将您删除的行移至您的
    .git/info/attributes
    文件中——该文件仅对您而言是本地的,不会签入。这允许您作为软件包开发人员继续使用 LFS。我制作了一个 gitattributes_package_dev_template 文件,其中包含有关如何在本地为其他包开发人员设置 LFS 的说明,并检查了这些说明。
  • 运行
    swift package purge-cache 
    删除旧缓存
  • 在另一个目录中尝试新的软件包克隆。您应该看到拉下来的文件是指针(约 150 字节),而不是巨大的二进制文件。很好,因为包安装速度很快,因为我们跳过了大文件。
  • 尝试在新的 Xcode 项目中安装您的包。现在应该可以了!
  • 可选:将
    git lfs install && git lfs pull --include="*" --exclude=""
    添加到人们在进行本地包开发时运行的脚本中。这将安装 LFS 挂钩,并将指针转换为二进制文件。
  • 如果您已有版本,请设置新版本。之前的版本会遇到 LFS 问题。
© www.soinside.com 2019 - 2024. All rights reserved.