CocoaPods和GitHub分叉

Ram*_*sel 106 github cocoapods git-fork

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

基本上,我在我的GitHub中使用以下代码分叉了一个项目Podfile:

pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Aar*_*ger 178

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

https://github.com/getaaron/TTTAttributedLabel

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

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

将更改推送到fork后,获取上次提交的SHA.您可以使用git rev-parse origin/master | pbcopy或在项目的GitHub提交页面上执行此操作: 在GitHub上复制提交的SHA的屏幕截图

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

pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'
Run Code Online (Sandbox Code Playgroud)

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

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

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

  1. 编辑项目中的代码并确保其有效
  2. 将更改复制到我的fork,by
    • 导出补丁,或
    • 复制整个源代码文件
  3. 提交并推送到GitHub
  4. 使用新SHA更新Podfile
  5. pod update.

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

不,你不需要.

  • 这是使用公共项目的自定义分支的完美修复.就我而言,我分叉和修改的项目,并有一个开放的PR维护者来合并这些变化,但想更新我的项目的Podfile立即使用这些更改.这很棒! (4认同)
  • @AaronBrager 显示“无法找到 '&lt;pod name&gt;' 的规范”,您知道如何解决吗? (2认同)
  • @AaronBrager 如果在我分叉存储库后原始分支更新了一些错误修复,我如何将这些新更改从原始存储库拉到我的分叉存储库? (2认同)

Ore*_*ren 33

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

pod 'AFNetworking', :path => '~/Documents/AFNetworking'
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述