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

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

我都是很苦逼的Merge工程文件的,习惯了还好,基本了解project.pbxproj的结构后对于比较小的改动量还比较好弄,但是如果改动太多,我通常还是采用手动merge
blankyao
2012-07-16 22:29:27 +08:00
我们现在的做法是只更新代码文件,然后写了个脚本根据svn更新的文件来自动的插入到xcode中去,就不用管项目文件的事儿了
chisj
2012-07-17 09:01:56 +08:00
我现在的做法是,每次commit前必须update一下。这样别人添加的文件就可以刷下来了。然后,新增文件后,尽快commit。

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

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

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

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

© 2021 V2EX