今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

gitignore に Pod サードパーティライブラリを追加

背景#

最近、プロジェクトで問題が発生し、長い間調査した結果、Pod が依存しているプライベートコンポーネントのコードに問題があり、パッケージング時にオンラインパッケージに問題が発生しました。

筆者のプロジェクトは機能に基づいてプライベートコンポーネントを抽象化し、Pod の方法でプロジェクトにインポートしましたが、Pod の内容は git にコミットされないため、Pod を変更するたびに主プロジェクトの git 変更の中で見ることができませんでした。そこでこの問題に直面しました。

まず、主プロジェクトでデバッグしているときに、Pod ライブラリの内容を変更しました。そして、変更内容を Pod ライブラリの独立したプロジェクトに同期しました。しかし、最終的にパッケージングするとき、Pod ライブラリの内容は古いものでした。プロジェクト内で依存している Pod ライブラリはバージョンが指定されており、Pod ライブラリの独立したプロジェクトを更新するとき、ブランチにのみ同期され、新しいタグは更新されませんでした。したがって、主プロジェクトのライブラリを再度更新すると、このライブラリの内容は再び古いものに戻ってしまいました。

Ps:理論的には、Pod ライブラリに入れる内容は頻繁に変更されるべきではなく、基本ライブラリなどを抽出したものです。しかし、実際の開発では、コンポーネント化のために、一部の機能コンポーネントもプライベートライブラリとして Pod 依存を使用することがあります。これらのライブラリは頻繁に変更される可能性があります。

この点に基づいて、筆者は Pod の内容を主プロジェクトの .git に入れる方が良いと感じました。変更を確認しやすくなり、上記の問題を回避できるからです。

修正#

筆者はプロジェクトのディレクトリに直接入り、.gitignoreファイルを編集し、ファイル内の #CocoaPods に関する内容を削除しました。以下のように:


#CocoaPods
Pods/
Pods
.DS_Store
Podfile.lock
/.DS_Store
Podfile.lock
/Podfile.lock

これを次のように変更しました:


#CocoaPods
.DS_Store
/.DS_Store

保存して終了した後、Pod ライブラリは依然として git に表示されず、.gitignore からすべての Pods 関連の内容が削除されていました。では、どこに問題があったのでしょうか?筆者はインターネットで多くの回答を検索しましたが、解決策は見つかりませんでした。

その時、.gitignore の上部に次の一文がありました。

# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

筆者は Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore を検索しましたが、似たようなファイルは見つかりませんでした。この時、全体的な .gitignore ファイルがあるのではないかと思いました。そこで、筆者はルートディレクトリに入り、open .gitignore と入力しましたが、The file /Users/horizon/.gitignore does not exist. と表示されました。うーん、このファイルはないのか?筆者は再度 ls -a と入力し、ルートディレクトリのファイル名が .gitignore_global であることを発見しました。開いてみると、確かに Pods が設定されていました。削除して保存し、終了すると、Pods 内のファイルが主プロジェクトの .git に表示されるようになりました。

結論#

プロジェクト内の .gitignore ファイルを編集した後、効果がない場合は、ルートディレクトリに行き、.gitignore_global を開いて、グローバル設定も変更する必要があるかどうかを確認してください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。