Xcode项目使用SVN需要注意的问题及设置

Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。

我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。

但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即project.pbxproj文件的提交冲突问题。

project.pbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。

 

如果项目成员提交了新的project.pbxproj文件,你这边没有在项目中增加新的文件,直接svn update就可以了。我是用命令行做update的,即:

svn up

这时可能会出现系统提示,因为subversion发现了local work copy和repository上的不一致。需要svn用户自己裁决,可以直接输入tf,即使用repository上版本即可,因为你没有更改project文件。即:

Conflict discovered in ‘EuM1.xcodeproj/project.pbxproj’. 
Select: (p) postpone, (df) diff-full, (e) edit, 
        (mc) mine-conflict, (tc) theirs-conflict, 
        (s) show all options: s

  (e)  edit             – change merged file in an editor 
  (df) diff-full        – show all changes made to merged file 
  (r)  resolved         – accept merged version of file

  (dc) display-conflict – show all conflicts (ignoring merged version) 
  (mc) mine-conflict    – accept my version for all conflicts (same) 
  (tc) theirs-conflict  – accept their version for all conflicts (same)

  (mf) mine-full        – accept my version of entire file (even non-conflicts) 
  (tf) theirs-full      – accept their version of entire file (same)

  (p)  postpone         – mark the conflict to be resolved later 
  (l)  launch           – launch external tool to resolve conflict 
  (s)  show all         – show this list

Select: (p) postpone, (df) diff-full, (e) edit, 
        (mc) mine-conflict, (tc) theirs-conflict, 
        (s) show all options: tf

 

在这里,如果记不清楚各个选项的含义,可以输入s了解。另外,如果不确定自己是否更改了本地的project文件,可以输入dc了解本地代码和repository上的差异。

但是,如果你也为项目增加了新文件,这样你的本地project文件和repository上的project文件都有新的内容。我现在的做法是p,即手工解决冲突,然后再次提交,通知项目成员更新。详细介绍可参考:http://www.logicaltrinkets.com/wordpress/?p=178,写的挺清楚的,英文的。

 

参考了:http://iphonedevelopertips.com/xcode/how-to-fix-subversion-in-xcode-3.html

需要在~/.subversion/config文件中设置一下。

找到:

# global-ignores

在下面添加:

global-ignores = build *~.nib *.so *.pbxuser *.mode* *.perspective*

因为build目录是不需要提交的,是构建出来的文件。另外,还有后缀是mode1v3和pbxuser等文件,这是Xcode用户文件。另外一些也是临时文件或者构建出来的文件。

 

另外,需要打开这行的注释:

# enable-auto-props = yes

还有,在:

[auto-props]

下面添加一些文件后缀的属性:

*.mode* = svn:mime-type=text/X-xcode 
*.pbxuser = svn:mime-type=text/X-xcode 
*.perspective* = svn:mime-type=text/X-xcode 
*.pbxproj = svn:mime-type=text/X-xcode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值