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
xatest
V2EX  ›  iDev

有多人协作开发同一个APP的吗?

  •  
  •   xatest ·
    aoxu · 2012-07-12 23:00:25 +08:00 · 4989 次点击
    这是一个创建于 4548 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的场景如下:一个iOS APP,由两个人共同开发不同的部分,使用git来做代码管理,两个人的改动都提交到同一个代码仓库。git 跟踪了.xcodeproj文件,准确说是跟踪了这个目录下的project.pbxproj文件,而在.gitignore中设定故意忽略了用户相关的文件。但是.xcodeproj这个项目文件实际上管理了所有源码文件,如果两个人分别添加了不同的新文件,.xcodeproj就会产生冲突。
    请问这种问题应该怎么解决?
    14 条回复    1970-01-01 08:00:00 +08:00
    xatest
        1
    xatest  
    OP
       2012-07-12 23:04:33 +08:00
    补充一下信息,因为在网上经常找到Xcode 3时代的过期信息,所以我觉得有必要标注一下版本。
    Mac系统版本 Lion 10.7.4
    Xcode版本 4.3.3 (4E3002)
    Veelian
        2
    Veelian  
       2012-07-12 23:12:31 +08:00
    project.pbxproj是文件夹,这层需要版本管理,下一层的**xuser**是个人配置属性,需要ignore
    xatest
        3
    xatest  
    OP
       2012-07-12 23:16:05 +08:00
    @Veelian project.pbxproj不是文件夹,是文本文件,-rw-r--r--,文件属性没有d。用户相关的配置已经ignore了。
    anerevol
        4
    anerevol  
       2012-07-13 00:15:41 +08:00
    添加之前先更新呗 不过好像有点麻烦
    有冲突了就把本地的删除掉 重新从服务器拉取 然后再添加文件
    话说我们公司是用的svn。。。
    xatest
        5
    xatest  
    OP
       2012-07-13 00:47:10 +08:00
    @anerevol 用svn还是git在这个问题上差不多,因为是对同一个文件的更改,所以都会冲突。
    Veelian
        6
    Veelian  
       2012-07-13 09:33:14 +08:00
    @xatest 说错了,不是project.pbxproj,是project.pbxproj的上层 xxx.xcodeproj是文件夹,里面有project.pbxproj,project.xcworkspace,xcuserdata,只要ignore xcuserdata文件夹就可以了
    xatest
        7
    xatest  
    OP
       2012-07-13 09:47:14 +08:00
    @Veelian 是这么做的,不过这样也不能解决project.pbxproj文件冲突的问题吧~
    Veelian
        8
    Veelian  
       2012-07-13 09:54:02 +08:00
    @xatest 这个既然在版本管理内,就应该存在冲突啊,这种冲突跟2个人改同一个文件产生的冲突是一样的,解决办法也是一样的啊。
    Veelian
        9
    Veelian  
       2012-07-13 09:55:46 +08:00
    @xatest 2个人做不同模块,应该每人新做一个分支的,双方都完成后,再合并2个分支。
    thinkinnight
        10
    thinkinnight  
       2012-07-13 11:00:48 +08:00
    似乎描述得不是很清楚,没坐过IOS开发,对于文件结构等不是很清楚。说说我的看法吧。
    首先要解决的文件是否在版本管理中,如果是在版本管理中,就用版本管理的方法来解决冲突问题,只需要进行merge就可以了,而且如果是两个人互相添加了不同的新文件的话,应该是可以通过工具自动进行merge的;如果不行,就需要引入人工merge过程,这是不可避免的,而且也是版本管理中必须有的。
    如果不在版本管理中,要搞清楚这个是否有必要进入版本管理,看样子应该是需要的,这时就必须重新定义版本管理中的条目,有哪些是需要ignore的,一般是IDE自动生成的一些标识文件、中间文件以及最终的执行文件。
    另外就是保证一定数量的comment,不一定每次check in都写comment,但是合作者之间不通过其他联系方式可以从comment中获取到基本进行下一步开发足够的信息。
    xatest
        11
    xatest  
    OP
       2012-07-13 12:01:27 +08:00
    @Veelian 现在是按模块分工的,在源码上两个人不会有交集,唯一麻烦的就是这个文件会冲突,如果能自动合并冲突是最好的。
    @thinkinnight 跟你说的一样,看来是需要自动合并+手动合并解决问题。
    godwarlock
        12
    godwarlock  
       2012-07-13 12:05:07 +08:00
    @xatest

    我都是很苦逼的Merge工程文件的,习惯了还好,基本了解project.pbxproj的结构后对于比较小的改动量还比较好弄,但是如果改动太多,我通常还是采用手动merge
    blankyao
        13
    blankyao  
       2012-07-16 22:29:27 +08:00
    我们现在的做法是只更新代码文件,然后写了个脚本根据svn更新的文件来自动的插入到xcode中去,就不用管项目文件的事儿了
    chisj
        14
    chisj  
       2012-07-17 09:01:56 +08:00
    我现在的做法是,每次commit前必须update一下。这样别人添加的文件就可以刷下来了。然后,新增文件后,尽快commit。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5139 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:18 · PVG 09:18 · LAX 17:18 · JFK 20:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.