我正在编写一个使用一系列第三方iOS库的项目(例如TWStatus,BSKeyChain),其中一些我已经修改过(最多10%的自定义代码),但是不会适用于原始的GitHub项目。
我考虑过来自图书馆作者的未来更新,今天遇到了CocoaPods,它看起来是一个很好的依赖管理器,与Bundle或Vundle(对于Vim)一样。
我很好奇我的自定义代码是否可能与使用CocoaPods的图书馆作者未来的更改共存?
答案 0 :(得分:5)
默认情况下,CoocaPods会将库作为源提取,并附带构建该库的说明。 (关闭源库有一些例外)。因此,这使得在项目环境中调试问题和测试更改变得容易。
决定进行更改后,您应该执行以下操作之一:
将更改提交回主库。您将获得轻松升级到包含更广泛社区提供的所有测试的新版本的好处。最简单的方法是分叉库,应用更改并发送拉取请求
如果您的更改对图书馆的其他用户没有任何好处,您可以分叉图书馆,而无需将更改提交给母版。如果许可证允许您可以维护私有分叉,并仍然从CocoaPods解决它。为此:
<强> Podfile:强>
#As long as the pod-spec is published at the root of the git repo, this works.
pod 'MyFantasticLib', :git => 'https://github.com/dogue/Doguetastic.git'
#. . and you can use this lib while you're waiting for your pull req. to be approved.
您还可以考虑设置private spec repo。
第一种选择通常是最好的。
答案 1 :(得分:2)
所以,要明确。
您已对依赖项进行了更改 您还希望保持这些依赖项是最新的。
-
对我而言,这将是一种痛苦。对于每个更新,您需要将新内容合并到您自己的版本中,以用于每个pod /依赖项。
但是,如果你做了改变......你真的需要吗?考虑使用适配器或façade模式在它们周围编写包装器,然后您可以根据需要更新它们(假设它们的接口不会更改)。
只是一些想法