如何修改用git(子树,子模块等)导入的第三方代码?

时间:2016-01-17 15:04:05

标签: ios git git-submodules git-subtree

我有一个需要支持iOS7的项目。我想使用一个不支持iOS7的lib(我们称之为LIB),但可以很容易地修改它。我也期望LIB会经常发生变化。

什么是理想的解决方案:

  1. 我将LIB的代码包含在我的项目中(标记为last 发布)

  2. 我修改LIB以支持iOS7(通常只提交一次)。我希望将此提交推送到LIB的原始存储库,但希望将其保存在我的项目存储库中。

  3. 当新的LIB版本发布时,我在我的项目中更新它 合并第2点的更改或只重做这些更改。

  4. 我不想在我的项目历史中拥有LIB的完整历史记录(因为git子树执行AFAIK)。只有“LIB更改为1.2.42; LIB已更新以支持iOS7”;

  5. 我可以自己复制LIB的代码或维护LIB的支持iOS7支持,但它很耗时而且不是很“自动”。我已经检查了git子模块和git子树,但据我所知,它不可能有点2,是吗?

    解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  

我可以......使用iOS7支持维护LIB的分支

我认为这是最好的选择。

将库分叉并在应用程序中使用fork。如果要使用新版本的上游库,请将这些更改合并到fork中,并更新主应用程序以使用新版本的分叉库。

使用Git子模块当然可以做到这一点,尽管像CocoaPods这样的依赖管理器可能是更好的选择。我通常更喜欢尽可能使用依赖管理器,尽管我不是iOS开发人员,并且不能特别关注CocoaPods。