CocoaPodsとGitHubフォーク


108

GitHubプロジェクトをフォークするのは今回が初めてであり、私もCocoaPodsに習熟していないため、ご容赦ください。

基本的に、私は私の中で以下を使用してGitHubでプロジェクトをフォークしましたPodfile

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

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

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

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

それともサブモジュールで何かをする必要がありますか?

回答:


185

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

https://github.com/getaaron/TTTAttributedLabel

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

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

変更をフォークにプッシュしたら、最後のコミットのSHAを取得します。これは、プロジェクトのGitHubコミットページを使用git rev-parse origin/master | pbcopyして、またはその上で実行できます。 GitHubでのコミットのSHAのコピーのスクリーンショット

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

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

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

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

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

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

それともサブモジュールで何かをする必要がありますか?

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


追加質問:では、Podfileを新しいSHAで更新する必要は本当にあるのでしょうか。pod install最新のコミットで最新バージョンを自動的に複製しないのですか?
ラムセル2014年

プロジェクトの名前を別の名前に変更して独自のpodspecファイルを作成する場合は、独自のリポジトリを指定してpod 'MyForkName', :head代わりに使用できます。
アーロンブラジャー2014年

1
:head:最新のポイントがコミットしていますが、使用することはできません:gitし、:head同じ行インチ
アーロンブラジャー2014年

4
これは、パブリックプロジェクトのカスタムフォークを使用するための完全な修正です。私の場合、私はプロジェクトをforkして変更し、メンテナーがそれらの変更をマージするためのオープンなPRを持っていましたが、プロジェクトのPodfileを更新してそれらの変更をすぐに使用したいと考えました。これはうまくいきました!
2015年

2
@AaronBragerは、「 '<ポッド名>'の仕様が見つかりません」と表示しています。解決方法を知っていますか?
Susim Samanta 2018年

34

別のオプションは、プロジェクトに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

ここに画像の説明を入力してください


1
これはどのように問題を解決しますか?ポッドはこれらのソースをプルし、ソースプロジェクトのポッドプロジェクトとして配置します。これらのファイル(現在はポッドに含まれています)への変更は、「〜/ Documents / AFNetworking」のGitによって追跡されていませんね。
Raj Pawan Gumdal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.