CocoaPods和GitHub分支

这是我第一次分叉GitHub项目,我也不太能胜任CocoaPods,所以请耐心等待。

基本上,我在我的Podfile使用以下内容在GitHub上分配了一个项目:

 pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git' 

然后我对fork进行了一些更改,当然,当我做了一个pod install来安装另一个pod时,它重新安装了原来的REActivityViewController并删除了我的更改。

我意识到我需要将我的更改推到另一个pod install之前我的叉,但我该怎么做,因为这是一个由CocoaPods安装的回购? 我查看了在REActivityViewController文件夹下安装的REActivityViewController文件夹,并没有任何git文件。

我是否需要在我的项目之外工作,然后使用CocoaPods来安装更改? 这是一个工作stream程太麻烦。

或者我需要用子模块做些什么?

我会用一个例子回答这个问题。 我有一个TTTAttributedLabel的分支,我添加了一些额外的function:

https://github.com/getaaron/TTTAttributedLabel

为了在Cocoapods项目中使用它,我:

  1. 将我的更改推送到我的分支
  2. configuration我的Podfile以获取更新和更新

将更改推送到您的分支后,获取上次提交的SHA。 你可以使用git rev-parse origin/master | pbcopy来做到这一点 git rev-parse origin/master | pbcopy或者在你的项目的GitHub提交页面上 : 在GitHub上复制提交的SHA的屏幕截图

然后,你可以像这样在你的Podfile中指定你的fork的特定提交:

 pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1' 

之后, pod update将从您的分叉中更新这个特定的提交。 如果你愿意的话,你也可以为你的fork创build一个podspec ,但是我觉得这个方法更简单,而且我不会频繁地进行更改来certificate新的工作stream程。

我是否需要在我的项目外工作,然后使用Cocoapods安装更改? 这是一个繁琐的工作stream程。

你可以这样做,但我通常:

  1. 编辑我的项目中的代码,并确保它的工作
  2. 将更改复制到我的分叉处
    • 导出一个补丁,或者
    • 复制整个源代码文件
  3. 提交并推送到Github
  4. 使用新的SHA更新Podfile
  5. 运行pod update

或者我需要用子模块做些什么?

不,你不需要。

另一个select是让你的项目直接引用该pod,而不是通过github。 这样你就不必一直提交你的fork或复制/粘贴代码来testing你的改变。 您可以同时使用两个不同的Xcode项目,并分别落实到各自的项目中。

 pod 'AFNetworking', :path => '~/Documents/AFNetworking' 

CocoaPods Documentation: http ://guides.cocoapods.org/using/the-podfile.html#using-the-files-from-a-folder-local-to-the-machine

在这里输入图像说明