What are the best practices while including a Xcode project under version control.
Check in project.pbxproj
, ignore the user specific files.
Include shared components and third party libraries as project dependencies using submodules/externals/whatever your VCS supports instead of manually copying static library binaries without any history.
You will get merge conflicts in the project.pbxproj
, be prepared to deal with this and try to minimize the difficulty of resolving them.
Check in early and often.
In my project I have Project.xcodeproj/project.pbxproj
in version control and leave out the User.mode1v3
and User.pbxuser
files.
project.pbxproj seems to hold the metadata for the project, such as where the files are located and what the build settings are.
The user files would have things like what files are opened, where the cursor is, etc.
You can also refer to THIS question for what files some people have chosen to ignore.
This is what is in my Global .gitignore
file which you can see as a gist on GitHub, but the Xcode list can be applied to other systems
# Mac OS X
*.DS_Store
# Xcode
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/
# Generated files
*.o
*.pyc
#Python modules
MANIFEST
dist/
build/
# Backup files
*~.nib
\#*#
.#*