背景
最近项目遇到了一个问题,排查了好久,最后发现是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
改为
代码语言:javascript复制
#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
,看是否这个全局的配置中是否也需要修改。