今是昨非

今是昨非

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

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を開いて、このグローバル設定も変更する必要があるかどうかを確認してください。

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