Pods要不要加入到git?

2013-10-12 23:02:26 +08:00
 refresh
以前一直是将Pods排除在git外面的,最今天出了一点小意外。产品发布的时候,我有创建一个branch,经过一段时间的改动,我想回滚到上一个branch,这没有什么问题。(其实这里应该要用tag而不是branch,是么?)

问题出在pods上了,我的pod引用没有使用tag而是使用了:branch => 'master'。因为是自建的pods,变更比较频繁,我不可能改一下就打个tag,所以偷懒直接用 branch了。

结果造成,回滚到指定版本的branch无法编译了,因为pod被大量修改过。

虽然这样并没有造成严重的后果,但突显了一个问题,我无法随时回滚到从前的任何一个版本。假如现在的app被拒绝,或者有一个严重的bug,我需要回滚到上一个发布版修正再发布,这会有一些麻烦。

我能想到的解决办法,一是把pods加入到git中去,但这样有麻烦就是每次pod update,都会产生大量的git提交。
另一种是在podfile中用tag而不是branch,但这种显然适合于稳定的pod,不适合正在开发随时变更的pod。
还有一种办法是开发的时候用branch,发布的时候用tag,但这样又太麻烦。

so,诸位,你们平时是怎么做的,求指点。
14292 次点击
所在节点    iDev
14 条回复
dorentus
2013-10-12 23:15:15 +08:00
只加 Podfile 和 Podfile.lock 到版本库里。

然后 Podfile 里面是可以这样直接指定一个 commit,不是一定要用 tag 或者 branch 什么的:

pod 'name', :commit = '91ff5e9690fd5132c6f752573a22fd1667eae0ea'

另外感觉 pod install 会是直接根据 Podfile.lock 来安装而不会去更新(我猜的,没试过)
dorentus
2013-10-12 23:17:42 +08:00
.gitignore 里面那行 Pods/ 应该是 CocoaPods 初始化的时候加的吧,作者的观点很明显了
zhigang1992
2013-10-12 23:21:16 +08:00
项目的依赖应该加到里面去的吧,如果是公共的项目就不应该。
refresh
2013-10-13 10:29:03 +08:00
@dorentus Podfile.lock我是ignore的,这个需要加到git么?我感觉pod install和pod update没啥区别啊,第一次用install,以后用update。你说的用commit的方式也不错,比tag好,发布的时候不用打tag,但如果变更频繁还是要用branch。不过一个项目中变更频繁的pod也不会太多,可以先用branch,在发布的时候改为commit。麻烦就是,发布的时候要记得改podfile。

@zhigang1992 如果是变更不频繁倒没关系,但pod经常会更新,update一次,全部文件都要提交到git。
vixvix
2013-10-13 11:33:51 +08:00
只加podfile, podfile.lock是不能加的,否则如果是用编译机的话出权限问题。
dorentus
2013-10-13 11:39:30 +08:00
@refresh
@vixvix

我查一下官方文档 http://docs.cocoapods.org/guides/working_with_teams.html
pod install 的行为正如我所说(需要存在 Podfile.lock);
Podfile.lock 需要置于版本库中。

「权限问题」是啥意思?多半是设置的问题吧。
refresh
2013-10-13 12:24:32 +08:00
@vixvix podfile.lock我通常是排除在外的,但加不加都没有发现你所说的权限问题
xuzhe
2013-10-13 21:14:50 +08:00
pods 引入的那些库也加入到项目的 git 库,就没有必要用 pods 了不是么。

pods 改动频繁就用 branch 是没问题,但每次对外发布版本的时候改回用 commit,并给你项目 git 库打个 tag,将来回滚就很容易了。
BB9z
2013-10-14 09:50:55 +08:00
正在开发随时变更的pod —— 用 git submodule 更合适。
refresh
2013-10-14 11:02:12 +08:00
@xuzhe 是,就是有点麻烦,发布也有点频繁,大概有三个Pods是常改的。这样发布的时候需要改一下podfile,和打tag,发布完了再改过来。其实可以做一个脚本,发布的时候,给所有需要的repos打上同一个tag并提交。不知道有没有这样的工具,等我有空写一个。


@BB9z submodule我没用过,但看相关资料和一些人的文章比较,似乎pods比submodule要好,因为pods是静态类引用 ,不需要包含不需要的文件,编译起来比较快,开发环境重置与部署也很方便,项目很干净。从目前的使用情况来看,我还是很喜欢pod的
vixvix
2013-10-14 11:12:54 +08:00
@refresh
@dorentus

查了查官方文档,是建议podfile.lock加入到repo里。不过我们用的jenkins如果加了这个文件就每次编译都会有权限问题。我们的IT也找不到原因,我也就不参合将就用了。
refresh
2013-10-14 12:03:50 +08:00
@vixvix
@BB9z
@xuzhe
@dorentus

你们用Pod+Xcode5了吗,在Archive的时候,有没有出现错误,把arm64删除就没事了,你们怎么处理?
dorentus
2013-10-14 15:39:23 +08:00
@refresh 记得是之前版本的 cocoapods 的 bug,更新一下 cocoapods(gem update cocoapods)应该就好了

https://github.com/CocoaPods/CocoaPods/pull/1352
dorentus
2013-10-14 15:40:32 +08:00
更新 cocoapods 之后再运行下 pod install 更新下 workspace

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/85397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX