优化工作流程以更新内部拥有的cocoapods依赖项?

Gol*_*les 6 xcode cocoa-touch objective-c ios cocoapods

假设我有一个主要Project A的几个cocoapods依赖(它们由我们组织的cocoapods repo内部拥有).

假设我正在努力Project A,并且在处理它时我发现了一个修复DependencyB,所以我修改了该依赖项中的代码,同时仍然在ProjectA的Xcode项目上.

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

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

Worflow避免

  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" }
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  5. 更新有机化的私人cocoapods回购(我存储在其中~/)

    cd ~/.cocoapods/OrganizationPrivateRepo/CoverFlux
    mkdir 0.1.7
    cd 0.1.7
    
    Run Code Online (Sandbox Code Playgroud)
  6. 将更新后的DependencyB.podspec复制到组织的私人仓库(克隆~/.cocoapods)

    ~/.cocoapods/OrganizationPrivateRepo/DependencyB/0.1.7/CoverFlux.podspec
    
    Run Code Online (Sandbox Code Playgroud)
  7. 提交私有存储库中的更改并推送到远程

    cd ~/.cocoapods/OrganizationPrivateRepo/
    git commit -am 'Added version 0.1.7 to DependencyB spec'
    git push origin master
    
    Run Code Online (Sandbox Code Playgroud)
  8. 最后进入初始的'Project A'文件夹并进行更新

    pod update
    
    Run Code Online (Sandbox Code Playgroud)

注意:

Project的pod文件如下所示:

    platform :ios, '6.0'
    pod 'DependencyB'
Run Code Online (Sandbox Code Playgroud)

Dav*_*d V 4

以下是一些简化工作流程的提示。除此之外,您可能需要考虑制作一些额外的脚本。

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

简化步骤 3

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

s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "#{s.version}" }
Run Code Online (Sandbox Code Playgroud)

简化步骤 5、6 和 7

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

pod push OrganizationPrivateRepo DependencyB.podspec
Run Code Online (Sandbox Code Playgroud)

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

pod push OrganizationPrivateRepo
Run Code Online (Sandbox Code Playgroud)

步骤4

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

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

更新:简化第 2 步

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

pod 'DependencyB', :path => "../path/to/DependencyB'
Run Code Online (Sandbox Code Playgroud)

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