6

假设我有一个Project A包含几个cocoapods 依赖项的 main (由我们组织的 cocoapods 存储库内部拥有)。

假设我正在研究Project A,在研究过程中我找到了 a 的修复程序DependencyB,因此我修改了该依赖项中的代码,同时仍在 ProjectA 的 Xcode 项目中。

将对该依赖项的更改推送到它自己的存储库然后更新该依赖项的最佳工作流程Project A是什么?

我真的很想要一些方法来避免完全自动化简化以下工作流程(这是一个 PITA)

要避免的工作流程

  1. git clone git@github.com:Organization/DependencyB.git
  2. 在依赖项目中进行更改(与修复我在处理时发现的问题时所做的更改相同Project A

  3. 更新DependencyB.podspec文件

    s.version = "0.1.7"
    s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "0.1.7" }
    
  4. 提交并标记此依赖项的版本

    git add -A
    git commit -m 'Made some changes'
    git tag -a 0.1.7 -m 'This is an awesome tag :D'
    git push origin master
    git push --tags origin
    
  5. 更新组织的私人 cocoapods 存储库(我存储在~/

    cd ~/.cocoapods/OrganizationPrivateRepo/CoverFlux
    mkdir 0.1.7
    cd 0.1.7
    
  6. 将更新后的 DependencyB.podspec 复制到组织的私有仓库(克隆在 中~/.cocoapods

    ~/.cocoapods/OrganizationPrivateRepo/DependencyB/0.1.7/CoverFlux.podspec
    
  7. 在私有存储库中提交更改并推送到远程

    cd ~/.cocoapods/OrganizationPrivateRepo/
    git commit -am 'Added version 0.1.7 to DependencyB spec'
    git push origin master
    
  8. 最后进入初始的“Project A”文件夹并更新

    pod update
    

笔记:

项目的 A podfile 看起来像:

    platform :ios, '6.0'
    pod 'DependencyB'
4

1 回答 1

4

这里有一些技巧可以简化您的工作流程。除此之外,您可能需要考虑制作一些额外的脚本。

首先,我建议您将 podspec 文件保留在项目的根目录中。因此,DependencyB.git 将具有文件 DependencyB.podspec。

简化步骤 3

更改您的源标签以引用该版本。这样,您只需要更改 podspec 中的版本行。

s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "#{s.version}" }

简化步骤 5、6 和 7

从 DependencyB.git 目录运行以下命令。(假设你有我上面建议的 podspec)

pod push OrganizationPrivateRepo DependencyB.podspec

如果 DependencyB.podspec 是唯一的 podspec 文件,您甚至不需要在行中包含它,从而产生:

pod push OrganizationPrivateRepo

第4步

最后,我认为简化第 4 步是可能的,但这是组织和个人开发人员之间不同的事情之一,因为它是他们工作流程的一部分。例如,我通常从我的 IDE 提交。

此类脚本可以集成到 podspec 中,以便它们更新s.version值。或者,从s.version值中获取正确的标签。

更新:简化第 2 步

看起来您对 DependencyB 进行了两次更改。你可以让 CocoaPods 设置一个符号链接。在 ProjectA 的 Podfile 中,设置如下:

pod 'DependencyB', :path => "../path/to/DependencyB'

您现在可以从 ProjectA 编辑 DependencyB 中的文件。pod update进行此更改后,您将需要运行。之后,对源的更改将立即可用,因为它是一个符号链接。执行此操作时,我无法从 Xcode 进行 Git 提交,但除此之外它运行良好。

于 2013-08-12T22:25:00.117 回答