CocoaPods和GitHub分叉

时间:2014-01-05 17:40:32

标签: github cocoapods git-fork

这是我第一次分享GitHub项目,我对CocoaPods也不太称职,所以请耐心等待。

基本上,我在我的Podfile中使用以下内容在GitHub上分叉项目:

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

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

我意识到我需要在另一个pod install之前将我的更改推送到我的fork,但是我如何做到这一点,因为这是CocoaPods安装的repo?我查看了REActivityViewController文件夹下安装的Pods文件夹,但没有任何git文件。

我是否需要在项目之外处理我的fork,然后使用CocoaPods来安装更改?这对工作流来说太麻烦了。

或者我是否需要对子模块执行某些操作?

2 个答案:

答案 0 :(得分:168)

我将使用一个例子回答这个问题。我有一个TTTAttributedLabel的分支,我在这里添加了一些额外的功能:

  

https://github.com/getaaron/TTTAttributedLabel

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

  1. 将我的更改推送到我的叉子
  2. 配置我的Podfile以获取更改&amp;更新
  3. 将更改推送到fork后,获取上次提交的SHA。您可以使用git rev-parse origin/master | pbcopyGitHub commits page为您的项目执行此操作: Screenshot of copying a commit's SHA on GitHub

    然后,您可以在Podfile中指定fork上的特定提交,如下所示:

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

    之后,pod update将从您的fork更新此特定提交。如果你愿意,你也可以为你的前叉设置一个podspec,但我发现这种方法更简单,我不会经常进行足够的更改以证明新的工作流程。

      

    我是否需要在项目之外的fork上工作,然后使用Cocoapods来安装更改?这是繁琐的工作流程。

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

    1. 编辑项目中的代码并确保其正常工作
    2. 将更改复制到我的分支上
      • 导出补丁或
      • 复制整个源代码文件
    3. 承诺&amp;推送到GitHub
    4. 使用新SHA
    5. 更新Podfile
    6. 运行pod update
    7.   

      或者我是否需要对子模块执行某些操作?

      不,你不需要。

答案 1 :(得分:33)

另一种选择是让您的项目直接引用pod而不是通过github。这样您就不必继续提交fork或复制/粘贴代码来测试您的更改。您可以同时处理两个不同的Xcode项目,并分别提交到各自的项目中。

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

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

enter image description here