我给了私有库git仓库,它配置了LFS。我通过添加Package.swift文件将该库转换为SwiftSPM兼容。当我通过拖放将其添加到应用程序项目时,我的包在本地工作正常。但是如果我试图从Xcode添加为Swift包管理器,我会得到下面的错误
无法检出修订版本'cdd 1352 f7 a46 a3 eb 6 ea 2f 087 da 5 fd 4 e5 fcc 5254 c':
错误传输“f2 f56588141 b3 b3 fa 7 bb8 c136079 b5 b38 cf 8615441 dde 51 d90 aa 4fffdc 8db 342”:[0]远程缺少对象f2 f56588141 b3 b3 fa 7 bb8 c136079 b5 b38 cf 8615441 dde 51 d90 aa 4fffdc 8db 342
我通过几个链接
- https://developer.apple.com/forums/thread/676670
- Xcode 11 swift package manager unable resolve packages的
- https://forums.swift.org/t/swiftpm-with-git-lfs/42396/4的
但对我来说没有任何效果:以下是我的设置细节
Xcode 12.5 git-lfs/2.13.3(GitHub;达尔文arm64; go 1.16.2)git version 2.30.1(Apple Git-130)
任何帮助将不胜感激。谢谢!!
1条答案
按热度按时间cu6pst1q1#
我找到了一种方法来解决这个问题,它可以让那些想要同时使用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
删除旧缓存git lfs install && git lfs pull --include="*" --exclude=""
添加到人们在进行本地软件包开发时运行的脚本中。这将安装LFS钩子,并将指针转换为二进制文件。