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

假设我正在处理Project A,并且在处理它的同时我找到了对DependencyB的修复程序,因此我在仍依赖于ProjectA的Xcode项目的同时修改了该依赖项中的代码。

最好的工作流来将对该依赖项的更改推送到它自己的存储库,然后在Project A中更新该依赖项?

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

要避免的人流

  • git clone [email protected]:Organization/DependencyB.git
  • 在依赖项项目中进行更改(与在解决我在Project A上发现的问题时所做的更改相同,)
  • 更新DependencyB.podspec文件
    s.version = "0.1.7"
    s.source = { :git => "https://github.com/Organization/DependencyB.git", :tag => "0.1.7" }
    
  • 提交并标记此依赖项的版本
    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
    
  • 更新组织的私有(private)cocoapods存储库(我存储在~/中)
    cd ~/.cocoapods/OrganizationPrivateRepo/CoverFlux
    mkdir 0.1.7
    cd 0.1.7
    
  • 将更新后的DependencyB.podspec复制到组织的私有(private)仓库(在~/.cocoapods中克隆)
    ~/.cocoapods/OrganizationPrivateRepo/DependencyB/0.1.7/CoverFlux.podspec
    
  • 提交私有(private)存储库中的更改并推送到远程
    cd ~/.cocoapods/OrganizationPrivateRepo/
    git commit -am 'Added version 0.1.7 to DependencyB spec'
    git push origin master
    
  • 最后进入初始的“Project A”文件夹并更新
    pod update
    

  • 注意:

    项目的Podfile如下所示:
        platform :ios, '6.0'
        pod 'DependencyB'
    

    最佳答案

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

    首先,我建议您将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设置符号链接(symbolic link)。在ProjectA的Podfile中,设置以下内容:
    pod 'DependencyB', :path => "../path/to/DependencyB'
    

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

    10-08 11:15