V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
refresh
V2EX  ›  iDev

Pods要不要加入到git?

  •  
  •   refresh · 2013-10-12 23:02:26 +08:00 · 14389 次点击
    这是一个创建于 4059 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前一直是将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,诸位,你们平时是怎么做的,求指点。
    14 条回复    1970-01-01 08:00:00 +08:00
    dorentus
        1
    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
        2
    dorentus  
       2013-10-12 23:17:42 +08:00
    .gitignore 里面那行 Pods/ 应该是 CocoaPods 初始化的时候加的吧,作者的观点很明显了
    zhigang1992
        3
    zhigang1992  
       2013-10-12 23:21:16 +08:00
    项目的依赖应该加到里面去的吧,如果是公共的项目就不应该。
    refresh
        4
    refresh  
    OP
       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
        5
    vixvix  
       2013-10-13 11:33:51 +08:00
    只加podfile, podfile.lock是不能加的,否则如果是用编译机的话出权限问题。
    dorentus
        6
    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
        7
    refresh  
    OP
       2013-10-13 12:24:32 +08:00
    @vixvix podfile.lock我通常是排除在外的,但加不加都没有发现你所说的权限问题
    xuzhe
        8
    xuzhe  
       2013-10-13 21:14:50 +08:00
    pods 引入的那些库也加入到项目的 git 库,就没有必要用 pods 了不是么。

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


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

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

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

    https://github.com/CocoaPods/CocoaPods/pull/1352
    dorentus
        14
    dorentus  
       2013-10-14 15:40:32 +08:00
    更新 cocoapods 之后再运行下 pod install 更新下 workspace
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:13 · PVG 12:13 · LAX 20:13 · JFK 23:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.