今是昨非

今是昨非

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

gitignore 添加 Pod 三方库

背景#

最近项目遇到了一个问题,排查了好久,最后发现是 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,看是否这个全局的配置中是否也需要修改。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。