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

标签 ios git git-submodules git-subtree

我有一个项目需要支持iOS7。我想使用一个不支持 iOS7 但可以轻松修改的库(我们称之为 LIB)。我也希望 LIB 会经常更改。

什么是理想的解决方案:

  1. 我将 LIB 的代码包含到我的项目中(用最后一个标记 发布)

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

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

  4. 我不想在我的项目历史记录中包含 LIB 的完整历史记录(因为 git subtree 做 AFAIK)。只有类似“LIB 更改为 1.2.42;LIB 已更新以支持 iOS7;”之类的内容

我可以自己复制 LIB 的代码或维护支持 iOS7 的 LIB 的分支,但这很耗时,而且不是很“自动”。我检查了 git submodules 和 git subtree 但据我所知不可能有第 2 点,是吗?

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

最佳答案

I can … maintain LIB's fork with iOS7 support

我认为这是最好的选择。

fork 库并在您的应用程序中使用您的 fork 。当您想要使用新版本的上游库时,将这些更改 merge 到您的分支中并更新您的主应用程序以使用您的分支库的新版本。

这当然可以使用 Git 子模块来完成,尽管有像 CocoaPods 这样的依赖管理器。可能是更好的选择。我通常更喜欢尽可能使用依赖管理器,尽管我不是 iOS 开发人员并且不能特别谈论 CocoaPods。

关于ios - 如何修改用 git 导入的第三方代码(子树、子模块等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839804/

相关文章:

git - 如何删除gerrit(3.0)中的帐户

来自本地文件夹的 git 子模块

ios - 如何在运行时访问类的源代码级定义?

ios - 创建存档后不会出现 xCode 更改

Git - 如何更新旧提交

Git 推送错误 : Repository not found

git - 如何使带有分离 HEAD 的子模块附加到实际 HEAD?

git-submodules - git 子模块的行为改变了吗?

ios - 重命名和重建后 Xcode 项目坏了(应用程序清理,同时运行,方案坏了)

ios - iOS 中的自定义 "resizable image"绘图