【发布时间】:2017-10-17 02:43:43
【问题描述】:
首先,我想提一下,我已经阅读了 cocoapods 指南https://guides.cocoapods.org/using/pod-install-vs-update.html
在一个每个人都只使用 pod install 命令并且我们在 播客文件。 .lock 文件似乎是多余的。
假设我们有一个使用 ReactiveSwift 的项目。 ReactiveSwift 在其 podspec 中对 Result pod 的依赖如下:
s.dependency 'Result', '~> 3.2'
我的假设是我不应该真正关心 ReactiveSwift 依赖什么,因为我只是要对我严格指定的 ReactiveSwift 版本进行 pod 安装。
对于我自己开发的 pod,我可以影响他们的 podfile 和 podspec 来严格指定我想使用的一个版本。
所以我的项目中没有 podfile.lock 的简化流程将是:
开发一个功能,如果它需要更改依赖版本 - 只需直接在 podfile 中指定它,而无需提交 Podfile.lock
将功能合并到 master 分支,然后 CI 使用新的 podfile 运行 pod install 命令
现在 CI 拥有其使用的所有正确版本的 pod,并且可以正确构建我的应用程序
在那种情况下是否需要 Podfile.lock ?
【问题讨论】:
-
当有人更新 Podfile 而你不知道时,这是一种保护措施。在构建时,Podfile.lock 将根据 Manifest.lock 进行验证 - 如果它们相同,则构建继续。如果没有,您会收到错误消息,告诉您需要更新机器上的 pod。 CI 服务器每次运行
pod install当然是有意义的,但在每次代码签出时记住它是没有意义的。 -
@Losiowaty 添加答案?
-
您的 pod 的依赖关系可能会引入重大更改。您不希望这种情况随机发生。大多数依赖管理器中都引入了相同的东西,例如javascript 的 npm。