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:
为了在Cocoapods项目中使用它,我:
- 将我的更改推送到我的分支
- configuration我的Podfile以获取更新和更新
将更改推送到您的分支后,获取上次提交的SHA。 你可以使用git rev-parse origin/master | pbcopy
来做到这一点 git rev-parse origin/master | pbcopy
或者在你的项目的GitHub提交页面上 :
然后,你可以像这样在你的Podfile中指定你的fork的特定提交:
pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'
之后, pod update
将从您的分叉中更新这个特定的提交。 如果你愿意的话,你也可以为你的fork创build一个podspec
,但是我觉得这个方法更简单,而且我不会频繁地进行更改来certificate新的工作stream程。
我是否需要在我的项目外工作,然后使用Cocoapods安装更改? 这是一个繁琐的工作stream程。
你可以这样做,但我通常:
- 编辑我的项目中的代码,并确保它的工作
- 将更改复制到我的分叉处
- 导出一个补丁,或者
- 复制整个源代码文件
- 提交并推送到Github
- 使用新的SHA更新Podfile
- 运行
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