SPM - 包包含修改后的依赖项

SPM - Package contains revisioned dependencies

我正在尝试使用 swift 软件包驱动程序安装 MongoDB swift 驱动程序。我按照 their instructions 并使用自制软件安装了 mongo-c-driver。然后我创建了一个新目录并在一个新项目中使用:

swift package init --type executable

然后我将依赖项添加到 Package.swift 文件。

当尝试 运行 任何在目录中调用 swift package resole 的命令时,我收到以下错误:

error: the package PackageReference(identity: "mongo-swift-driver", name: nil, path: "https://github.com/mongodb/mongo-swift-driver.git", isLocal: false) @ 0.0.2 contains revisioned dependencies:

PackageReference(identity: "swift-bson", name: nil, path: "https://github.com/mongodb/swift-bson", isLocal: false) @ master

PackageReference(identity: "swift-mongoc", name: nil, path: "https://github.com/mongodb/swift-mongoc", isLocal: false) @ master

我确保所有内容都是最新的并且 Package.swift 的第一行是 // swift-tools-version:4.0

我想知道这些修改后的依赖项是什么,因为我没有发现任何有用的东西。以及如何解决此错误。

Swift Evolution 提案引入了在 SPM 包中指定分支而不是修订的能力(SE-0150 是这样说的:

While this feature [specifying branches] is useful during development, a package's dependencies should be updated to point at versions instead of branches before that package is tagged for release. This is because a released package should provide a stable specification of its dependencies, and not break when a branch changes over time. To enforce this, it is an error if a package referenced by a version-based dependency specifies a branch in any of its dependencies.

您正在使用的父包版本 0.0.2 似乎没有遵循为其依赖项切换到特定版本的规则,SPM 不允许这样做。

如果可能,您应该尝试使用修复此问题的较新版本的父包。如果不存在较新的版本,您可能必须覆盖依赖项并自己修复它(我相信您可以使用 swift package edit 来做到这一点——当然,或者分叉依赖项并指向您自己的存储库。)