web-dev-qa-db-ja.com

CocoaPodsおよびGitHubフォーク

GitHubプロジェクトをフォークするのは今回が初めてで、CocoaPodsの能力もあまりありませんので、ご容赦ください。

基本的に、Podfileで以下を使用してGitHubでプロジェクトを分岐しました。

pod 'REActivityViewController', '~> 1.6.7', :git => 'https://github.com/<username>/REActivityViewController.git'

その後、フォークにいくつかの変更を加えました。もちろん、pod installを実行して別のポッドをインストールすると、元のREActivityViewControllerが再インストールされ、変更が消去されました。

別のpod installの前に自分の変更をフォークにプッシュする必要があることに気づいていますが、これはCocoaPodsによってインストールされたレポであるため、どうすればよいですか? REActivityViewControllerフォルダーの下にインストールされたPodsフォルダーを調べましたが、gitファイルはありません。

プロジェクト外でフォークを操作し、CocoaPodsを使用して変更をインストールする必要がありますか?それはあまりにも面倒なワークフローです。

または、サブモジュールで何かする必要がありますか?

104
Ramsel

例を使用してこの質問に答えます。ここに追加したいくつかの追加機能を備えたTTTAttributedLabelのフォークがあります。

https://github.com/getaaron/TTTAttributedLabel

Cocoapodsプロジェクトでこれを使用するために、私は:

  1. 変更をフォークにプッシュする
  2. Podfileを構成して変更と更新を取得する

変更をフォークにプッシュしたら、最後のコミットのSHAを取得します。これはgit rev-parse Origin/master | pbcopyまたは GitHub commits page プロジェクトの場合: Screenshot of copying a commit's SHA on GitHub

次に、次のように、Podfileでフォークの特定のコミットを指定できます。

pod 'TTTAttributedLabel', :git => 'https://github.com/getaaron/TTTAttributedLabel.git', :commit => 'd358791c7f593d6ea7d6f8c2cac2cf8fae582bc1'

その後、 pod updateは、フォークからこの特定のコミットを更新します。必要に応じて、フォーク用にpodspecを作成することもできますが、このアプローチは簡単で、新しいワークフローを正当化するほど頻繁に変更を加えることはありません。

プロジェクト外でフォークを操作し、Cocoapodsを使用して変更をインストールする必要がありますか?これが面倒なワークフローの方法です。

あなたはこの方法でそれを行うことができますが、私は通常:

  1. プロジェクト内のコードを編集し、動作することを確認します
  2. によって、変更をフォークにコピーします。
    • パッチのエクスポート、または
    • ソースコードファイル全体をコピーする
  3. GitHubにコミットしてプッシュする
  4. Podfileを新しいSHAで更新する
  5. 実行pod update

または、サブモジュールで何かする必要がありますか?

いいえ、必要はありません。

173
Aaron Brager

もう1つのオプションは、プロジェクトにgithub経由ではなくポッドを直接参照させることです。これにより、変更をテストするためだけに、フォークをコミットしたり、コードをコピー/貼り付けしたりする必要がなくなります。 2つの異なるXcodeプロジェクトを同時に操作し、それぞれのプロジェクトに個別にコミットできます。

pod 'AFNetworking', :path => '~/Documents/AFNetworking'

CocoaPodsドキュメント: http://guides.cocoapods.org/using/the-podfile.html#using-the-files-from-a-folder-local-to-the-machine

enter image description here

33
Oren