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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM