Sharing projects

Hi, I'm pretty new to the using xcode and xcodeproj files. Can some please assist me with 'best' practices with multiple developers using the same project? I.e. what files are developer specific and what files are project specific.
We are noticing that when updating the xcodeproj file from svn, we often need to add files back to the project. (Obviously I'm new to xcode development as well).

On the android side we use maven pom files and Intellij. We don't check in any .idea or iml files.

Thanks in advance


Should have added that we're using subversion as our repositary


Hello Fred.

Usually I add all Xcode stuff to repository except "xcuserdata" subfolders of .xcodeproj and .xcworkspace bundles. Those contain user-specific data of projects and workspaces respectively.


Hmmm. Seems that this doesn't work too well with SVN. If two developers modify the same  xproj them attempt to update the repositary. SVN seems unable to merge the changes. The result is either a broken xproj file (Because of SVN annotations) or you have to manually fix things up


Well, that's the same problem as with regular source file modified by several developers at the same time.
Still ".xcodeproj" (especially .pbxproj file) and ".xcworkspace" folders are essential because they contain both structure and settings of your project - IDE won't even open the project without them.

So you'll have to fix things manually which is annoying but relatively simple once you get familiar with those files structure. Migrating to VCS with auto-merging capabilities (like git or Mercurial) may help to make such conflicts much less frequent.


Seems like there is no better way with SVN than the manual merge. (Of course the problem with xcodeproj files vs regular source code merges is that we are familiar with the content of regular files vs the auto generated project files)


If moving from SVN is not an option there are some ways to use git as a frontend for SVN -
AFAIK that may help to avoid manual merging is most cases.


Please sign in to leave a comment.