背景#
最近專案遇到了一個問題,排查了好久,最後發現是 Pod 依賴的私有組件的程式碼有問題,導致了打包的時候線上包出現了問題。
筆者的專案按照功能抽象出了私有組件,使用 Pod 的方式導入專案,但是 Pod 的內容是不提交到 git 的,即每次 Pod 修改,在 主專案的 git 變更中看不到。於是就遇到了這個問題。
先在主專案中調試的時候,修改了 Pod 庫的內容。然後把修改內容同步到了 Pod 库單獨的專案。但是最後打包的時候 Pod 库的內容卻是舊的。因為專案裡依賴的 Pod 库指定了版本,而更新 Pod 庫單獨的專案時,只同步到了分支上,沒有更新新的 Tag。於是再次更新主專案的庫時,這個庫的內容就又變回了舊的。
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
,看是否這個全局的配置中是否也需要修改。