【问题标题】:CocoaPods: How are "fixes" in the pod sources handled for update?CocoaPods:如何处理 pod 源中的“修复”以进行更新?
【发布时间】:2014-02-28 22:52:29
【问题描述】:

我刚开始使用 CocoaPods,有些东西我还不是很清楚。

据我了解,pod 命令行实用程序从 https://github.com/CocoaPods/Specs 获取 PodSpecs

pod install 查找这些规范并从本地 Podfile 中克隆相应的存储库(例如在 github 上或其他)。

pod update 再次获取规范并检查更新。如果有与本地 Podfile 匹配的新版本,则会获取这些更新。

现在我注意到一些具有 podspec 的项目在更新其存储库时没有增加其 podspec 中的版本号。

这意味着如果我在时间 A 安装一个 pod,而有人在时间 B 安装相同的版本,他们将获得不同的来源。

另外,如果第一个人在时间 B 进行更新,他们将不会获得更新,因为 pod 假定没有新版本。这个对吗?提前致谢!

【问题讨论】:

    标签: git cocoapods


    【解决方案1】:

    这里有几件事我想回应一下。

    现在我注意到一些具有 podspec 的项目在更新其存储库时没有增加其 podspec 中的版本号。

    这通常不是问题。虽然人们可能会在不更新 podspecs 的情况下更新他们的 repo,但我们强制所有 podspecs(除了一个例外)都基于 git 标签。因此,除非库所有者删除并在新位置重新制作标签(可以这样做),否则源应该永远不会根据相应的 podspec 更改。唯一的例外是规格标记版本0.0.1(尽管并非该版本的所有规格都这样做)。我们允许“未版本化”的那些规范意味着它们可以指向存储库中的单个 git 提交。虽然我们不允许更新此提交,但我们认为它更具延展性,因为它很容易被 rebase 之类的东西破坏。我们还认为,如果库作者不愿意标记一个 repo,我们不应该将其视为正在维护。

    我认为这间接回答了有关在不同时间安装的问题。答案应该是两个用户将获得相同的来源。

    如果您担心无法获得正确的版本(尽管这也由 Podfile.lock 管理),您可以像这样包含 pod:

    pod 'foo', '1.0'
    

    这将始终强制安装 1.0。您还可以使用语义版本匹配器:

    pod 'foo', '~> 1.0.0'
    

    这还将为您提供不应破坏兼容性的更新版本。请注意,版本号不需要是语义的,因此这完全取决于库所有者的判断。

    最后运行 pod update 会将 Podfile.lock 中的数字与您的 Podfile 进行比较,并获取满足您的约束的最高新版本。如果您根本没有指定版本,这将特别有用:

    pod 'foo'
    

    因此,它将始终更新为库的最新 podspec(如果它还没有的话)。

    编辑:

    澄清更新。如果有人修复了他们的 repo 的来源并希望将其转移到他们的 CocoaPod 中,他们必须提交一个 版本的规范。我们不允许更新任何现有规范中的源位置。无论哪种方式,CocoaPods 都会安装保存在 Podfile.lock 中的版本。如果有你想要的新版本,你必须运行pod update

    【讨论】:

    • 感谢回复,我知道 Podfile 中有这些版本号。因此,如果我的理解正确,那么 pod 将忽略 git 存储库中的“修复”,直到有人更新标签?但即便如此,pod 也不会识别更新,因为 podspec 版本没有更改,因此您只会在安装时获得更新,而不是在更新时获得更新 (?)
    • 再次感谢,还要澄清一件事:您说您“不允许”更新现有规范中的源代码。但是规范中没有特定的提交哈希,所以如果 repo 的所有者只是更新了源和标签,那么 pod 怎么知道这是一个“无效”的更新呢?不会有任何新的 pod install 获取具有相同版本号的“新”源吗?
    • 如果图书馆作者重新标记了图书馆,我们对此没有任何了解。 Podfile.lock 中有一个基于规范的哈希。如果规格发生变化,那将会改变。因此,当您进行安装并且有新源(如果您尚未安装)时,它将获得新源。
    猜你喜欢
    • 1970-01-01
    • 2019-07-14
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多