Alternatives to SVN Subversion for xCode Development

imageDo you need SVN or is there another way to manage code?

We use and manage an SVN server dedicated to our xCode development, but mostly because we can, not because we need to. We have the servers, knowledge and experience to do this so we did.

I thought I would suggest another way to share code among multiple developers, and still keep thorough backups of all the things you need.

There are a few exceptions and we will list them first.

1. Technically SVN allows for two people to work on the same code at the same time, and for those changes to be mashed together. Sort of. However this is not really the case. SVN does such a lame job of mashing when compared to some TFS systems we have used for years, that we would advise strongly against thinking it will solve this problem.

For this reason, we treat SVN as a single user project for modifications, but that all users can update their local copy of the code any time, and test locally.

2. SVN encourages you to keep the server repository separate and Update or download a local version for working. “A working copy”, that you can then update back to the server when ready for check in. The process works well, and forces some dev discipline.

The suggested alternative to SVN with xCode working remotely for developers

What you need:

Skype, DropBox, Time Capsule

image imageimage

1. Create a DropBox account and share access to this for your developers. If you all use the same account, you can probably do this for free.

Drop Box will cache a folder to the cloud, and share that back to all users with the same account. Great service that just works!

2. Skype lets you talk to your other developers. Not really necessary, but a lever of communication is needed to ensure that you are not on the same project at the same time. This is nothing new to SVN that suffers the same problem and requires the same communication.

3. Time Capsule – This is to perform backups that are easy to revert to any point in time. We suggest that each developer has their own Time Capsule

Here is how it works


  1. Setup a Working folder for xCode, with a sub folder by developer name. Eg xCode Working /My Name. Setup a folder for each developer. We will call this the working folder.
  2. Setup a folder system / single folder and one sub folder for all your xCode projects. E.G. xCode Dev  with sub folders /Project1  etc
  3. Setup a different folder and sub folders for supporting files. Original images, notes etc that relate to the same projects.
  4. Make sure that Drop Box is syncing these folders and all sub folders.
  5. Drop your projects into the related xCode project folders and sync to the cloud.
  6. When it is time to work. Clear your working folder of all files.
  7. Grab a copy of your xCode files from the project folder, and drop it into your working folder.  Inform others that you have the folder checked our, by changed the folder name to: “/project1 – checked out to me” Work away.
  8. If you are online, drop box will be syncing everything you do. No problem as the xCode changes are usually small. Either online or off. Not really a big deal.
  9. When you are ready to submit your changes back to the “Server” just copy all files back to the folder that you changed to – “checked out to me”. And rename it back to it’s original name.
  10. Sync to dropbox, or let is be syncing all the time is even better.
  11. Make sure that your time capsule is backing up periodically.


1. The more connected and syncing to drop box the better.

2. Don’t work on code that is marked as check out to others, but you can grab a copy from any time and look / play with it in your working directory. You can even copy from someone’s working directory to yours.

3. Don’t check in over others checked out projects.

4. Be disciplined about notes and image originals into the correct notes folder.

That’s is. You own automates SVN in the cloud.

Disaster / Backup restore.

Easy. When you find a problem, you can use your time capsule to go back to any point in time for any project for any user directly from your time capsule. Any other team member with a time capsule can do the same.

The benefits are huge.

1. It actually gives you more protection and backup and SVN.

2. You all automatically have the latest code shared via Drop Box.

3. It costs almost nothing.

4. You have total control.

5. It works well.

xcode 4 with subversion SVN server–Tips

As newly anointed Xcode developers, and now with the release of Xcode 4. We found our team working on trying to get connected to a new subversion (svn) server at the same time we were trying to discover some new features of Xcode 4.

Talk about challenging.

Actually this was the first time with anything Apple we have not had a great experience. Loads of talk etc on the net about what a pain in the bum it all is.

For those who don’t know. Subversion is a code storage system that allows check in / check out of developer Xcode to a server. There are services online that you can pay monthly to for the use of a SVN server. We wanted to host it on one of our own servers.

The setup was not easy and required the setup of a new Linux server, then the setup of the SVN code to turn it into an SVN server.

What became confusing was when we needed to get Xcode to talk to the darn thing. Here is the important things you need to know.

First Contact

Just like the movie from when I was a kid, “First encounter”  is a big deal! Big enough to heap your mashed potato into a big mountain!

1. Open Xcode and select Window / Organiser.

2. Select Repositories

3. Bottom left, click the +

4. Add the details of the SVN server. Like this: svn:// (this should be the details for your SVN Server).

5. Where asked for Trunk Branches and Tags (leave empty for now).


Now we nee to use the “Terminal” program to make a connection to SVN.

1. Create a test.txt file with some simple message in it. Save it in your documents folder on your mac.

2. Open Terminal

3. Type “svn import /Users/yourname/Documnets/test.txt svn:// -m “initial import” –username yourname


the path “/Users/yourname/Documnets/test.txt” should be a path to any single dummy test.txt file. The idea is that we are uploading a single file to establish a connection.

The: svn:// is the path to your SVN server

“initial import” is only a tag line. Not needed

–username yourname = This is your SVN user name. Ensure you use a double dash username.

EG: our code looks like this:

svn import /Users/spascoe/Documents/Temp/test.txt  svn:// -m “test import”

4. You will be prompted with your existing user for your user password. At this point, if your mac user name does not match the configured SVN user name. Just hit enter. It will then prompt of a user. Type the new SVN user name, then enter. Then the configured SVN pass and enter.

5. You will likely see something that says. “svn:// already exists” – Ignore that!

6. Close Xcode

7. Open Xcode again and return to the Optimizer / Repositories and with luck, your server will list on the left hand side, and show the ROOT and any folders on the SVN server.

8. Click back on the server name in the left hand column.

9. Type in the names of the Trunk Branches and Tags folders. We chose to use these names to make it easy. They need to be setup on the SVN server by the administrator. They ARE case sensitive.

10. The text.txt file can be deleted from the server through Xcode if desired.

11. Close the terminal session.


Sometimes not all views refresh correctly. We suggest closing Xcode and opening it again to get things visible that you know should be there.

If you need to change user names, and or passwords. Then you will need to enter the terminal again and upload something using the method above.

We don’t understand exactly why, but it appears that Xcode will remember the authentication of the terminal session, and caches the authentication properties some place. Without the terminal session upload, you will never get it working!