Tom Whipple

Configuring CVS for Apple's XCode Projects

UPDATE: It seems that most of the nonsense described below is fixed in XCode 3.1.2. However it is still necessary to import the project and then check it out again. Apple ostensibly has integrated CVS & SVN as version control into XCode. But in XCode 3.1.1 the CVS integration is very poor. The problem seems to be the project/build directory where XCode keeps binaries. This directory appears to be generated from all the other files, so the solution seems to be to leave it out of CVS. These steps seem to work:
  1. Make sure the repository is set up. (See Apple’s instructions or better yet, the CVS manual) This includes defining the repository under SCM in XCode.
  2. Create the project in a temporary directory as normal in XCode.
  3. Go to SCM>Configure SCM for this project. Choose your repository and click OK.
  4. Go to Build>Clean All Targets.
  5. Close the project window.
  6. Go to the project directory in the Finder and delete the contents of the “build” directory.
  7. In XCode, go to SCM>Repositories tool.
  8. Click “Import” and import the temporary project directory into CVS.
  9. Click “Checkout” and choose the directory where you will do your work. (This is NOT the temporary project directory you created in step 2.)
  10. XCode will ask you if you want to open the project when it is done with the checkout. If the checkout directory structure looks good, you should delete the temporary directory.
NOTE: If some subset of the builds directory shows up under the SCM tool on the left of the project tab, go to SCM>Refresh Entire Project BEFORE the build directory gets committed. NOTE 2: If the build directory gets committed by mistake, delete it from the repository, the local directory structure, and the corresponding entry in the projectdir/CVS/Entries file.