6

Project Aいくつかのcocoapods 依存関係を持つメインがあるとしましょう(これらは、組織の cocoapods リポジトリによって内部的に所有されています)。

に取り組んでいるとしましょう。Project 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. 最後にイニシャルの「プロジェクト 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 ディレクトリから次を実行します。(上記で提案したように、ポッドスペックがあると仮定します)

pod push OrganizationPrivateRepo DependencyB.podspec

DependencyB.podspec が唯一の podspec ファイルである場合は、行に含める必要さえなく、次のようになります。

pod push OrganizationPrivateRepo

ステップ 4

最後に、ステップ 4 を簡素化することは可能だと思いますが、それはワークフローの一部であるため、組織や個々の開発者によって異なるものの 1 つです。たとえば、通常は IDE からコミットします。

このようなスクリプトは、値を更新するように podspec に統合できs.versionます。または、値から正しいタグを取得しs.versionます。

更新: ステップ 2 を簡略化

DependencyB に 2 回変更を加えているようです。CocoaPods にシンボリック リンクをセットアップさせることができます。ProjectA の Podfile で、次のように設定します。

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

ProjectA から DependencyB のファイルを編集できるようになりました。pod updateこの変更を行った後、実行する必要があります。その後、ソースへの変更はシンボリック リンクであるためすぐに利用可能になります。これを行うときに Xcode から Git コミットを作成するのに問題がありましたが、それ以外はうまく機能します。

于 2013-08-12T22:25:00.117 に答える