Thursday, October 29, 2009

A better sample gitignore file for XCode Cocoa projects on Mac OS X (iPhone, too)

When we switched to git last year (from Subversion) we took a little time and beefed up our ignore file. While working on another project recently, I realized that most of the example .gitignore files for Cocoa/MacOSX/XCode on the web are really not terribly complete, and the results can be very frustrating when you're just getting started with a new repository.

Here's a better .gitignore example. Let me know if I left anything out. (I saw a few examples from people who exclude the pattern "profile", but as far as I can tell, that's really not a very good idea. I assume they have a specific use case of some kind which eludes my pondering.)

The current version of this file can be found on GitHub:
.gitignore for Xcode, Cocoa, Swift, Objective C, Mac OS X, iOS, TV, Watch

A better .gitignore for XCode, Cocoa, and Mac OS X git repositories:

# Mac OS X Finder and whatnot
.DS_Store

# Sparkle distribution Private Key (Don't check me in!)
dsa_priv.pem

# XCode (and ancestors) per-user config (very noisy, and not relevant)
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser

# Generated files
VersionX-revision.h

# build products
build/
*.[oa]

# Other source repository archive directories (protects when importing) .hg .svn CVS # automatic backup files *~.nib *.swp *~ *(Autosaved).rtfd/ Backup[ ]of[ ]*.pages/ Backup[ ]of[ ]*.key/ Backup[ ]of[ ]*.numbers/

2 comments:

  1. hey I borrowed your better code - and I added to it - heres a script that puts this and something for .gitattributes into an Xcode script menu item - to auto generate it for the directory of your choosing.

    http://github.com/tbarbe/Xcode-Git-User-Script

    Thanks for posting your stuff - hopefully my mod is useful to someone.

    ReplyDelete
  2. We've created a GitHub repository and added the (much expanded) .gitignore file that we currently use. Share and enjoy!

    A Better .gitignore for Cocoa and Xcode

    ReplyDelete