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

时间:2013-08-12 22:04:18

标签: ios objective-c xcode cocoa-touch cocoapods

假设我有一个主Project A,其中有几个 cocoapods依赖(由我们组织的cocoapods repo内部拥有)。

假设我正在处理Project A,并且在处理它时我发现DependencyB上有一个修复程序,所以我修改了该依赖项中的代码,同时还在ProjectA的Xcode项目上。< / p>

什么是最好的工作流程,将该依赖项的更改推送到自己的存储库,然后在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" }
    
  4. 提交&amp;标记此依赖项的版本

    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. 提交私人存储库中的更改&amp;推送到远程

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

    pod update
    
  9. 注意:

    Project的播客文件如下:

        platform :ios, '6.0'
        pod 'DependencyB'
    

1 个答案:

答案 0 :(得分: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提交时遇到了麻烦,但除此之外它运行良好。