这是我第一次 fork GitHub 项目,我对 CocoaPods 也不太熟悉,所以请耐心等待。
基本上,我在 GitHub 上 fork 了一个项目,在我的 Podfile
中使用以下内容:
pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'
然后我对 fork 进行了一些更改,当然,当我执行 pod install
来安装另一个 pod 时,它重新安装了原始的 REActivityViewController
并删除了我的更改。
我意识到我需要在另一个 pod install
之前将我的更改推送到我的 fork,但是考虑到这是由 CocoaPods 安装的存储库,我如何知道它是正在安装的 fork?我查看了 Pods
文件夹下安装的 REActivityViewController
文件夹,没有任何 git 文件。
我是否需要在项目之外处理我的分支,然后使用 CocoaPods 来安装更改?这样的工作流程太繁琐了。
或者我需要对子模块做一些事情吗?
最佳答案
我将用一个例子来回答这个问题。我有一个 TTTAttributedLabel 的分支,其中添加了一些额外的功能:
为了在 Cocoapods 项目中使用它,我:
- 将我的更改推送到我的分支
- 配置我的 Podfile 以获取更改和更新
将更改推送到分支后,获取上次提交的 SHA。您可以使用 git rev-parse origin/master | pbcopy
来执行此操作或上GitHub commits page对于您的项目:
然后,您可以在 Podfile 中指定 fork 上的特定提交,如下所示:
pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'
之后,pod update
将从您的 fork 更新此特定提交。如果你愿意,你也可以做一个podspec
对于你的 fork ,但我发现这种方法更简单,而且我没有足够频繁地进行更改来证明新工作流程的合理性。
Do I need to work on my fork outside of my project and then use Cocoapods to install the changes? That's way to cumbersome of a workflow.
你可以这样做,但我通常:
- 编辑我的项目中的代码并确保其有效
- 将更改复制到我的 fork,方法是
- 导出补丁,或
- 复制整个源代码文件
- 提交并推送到 GitHub
- 使用新 SHA 更新 Podfile
- 运行
pod update
.
Or do I need to do something with submodules?
不,你不需要。
关于github - CocoaPods 和 GitHub fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936885/