views:

2832

answers:

7

I've been developing my first iPhone app part-time and would like to start using a more rigorous form of version control than I've been using over the past four months, i.e. copying source code folders to another directory and time stamping them.

I've used SourceSafe and Team Foundation System but I don't have a good idea of what version control systems (VCS) are available for the Macintosh. I've seen ads on SO for a Subversion front end but would like some other options.

Here's a list of my initial requirements:

  • Runs locally under OS X Leopard 10.5.7
  • Integrates with XCode 3.1.3 (if no integration, user-friendly interface)
  • Basic VCS features - check-in comments, branching, pinning
  • Advanced VCS features like build automation or reports would be nice but not critical at this time
  • Ability to handle multiple developers down the road (6-12 months)

Thanks in advance for the help.

A: 

SubVersioN (SVN) fulfills (most of) your requirements.

Traveling Tech Guy
+4  A: 

SVN or Subversion is included with Xcode and is well integrated with it. As you grow to have bigger needs, you can use third-party Subversion servers and use the same SVN support over the network. If you don't like SVN, I think XCode supports CVS too.

If you're looking for something adequate, cheap, and expandable, then just mosey on over to the SCM menu of XCode, and check out what's already there. If you need help setting up SVN, just comment.

mahboudz
Here's a good step-by-step:http://iphonedevelopment.blogspot.com/2009/03/version-control-is-your-friend.htmlYou should be able to set it up in ten or so minutes.
mahboudz
SVN is a great free solution. Been using it for a while. Love it.
mkelley33
I've always had problems with Xcodes SVN integration it never seems to work, however Versions or Cornerstone are awesome SVN thirdparty GUIs if you dont like using the command line (which is easy)
tigermain
A: 

Perforce is free for up to two users, but will be expensive after that. You might want to check it out, however. Xcode supports Perforce repositories.

Alex Reynolds
A: 

I just looked in Xcode (3.2, though, so it may not be exactly the same) and the options for source control integration are subversion, CVS and perforce.

Outside of Xcode, there are a couple of very nice GUI clients for subversion for OS X.

Subversion would be a good place to start, it seems.

All the cool kids are using distributed VCSes these days, apparently. You might want to spend half an hour reading up on git or mercurial (hg - my preference). There's no direct integration with Xcode, but they're easy enough to get into.

marramgrass
+1  A: 

IT looks like subversion would be your best choice for XCode as there is already some guidence on getting that up and running with XCode here. Subversion addresses all of the features you are speaking of. Pinning specifically is a feature of Source Safe; however subversion can do tagging. Build automation is not a feature of a source control system, but source control systems are typically used in continuous integration server scenarios. I have not used it but from what I understand Hudson is a continuous integration Server which is gaining popularity and momemtum. You can find more information on Hudson here and here

Michael Mann
+1  A: 

I'd also put in a vote for subversion since XCode supports it natively. I've been using it myself and have been very happy.

However I'd question your requirement to run the server locally. Sure, you can do that no problems with subversion. But wouldn't you be nervous about your hard disk failing?

I've been using Beanstalk to host my source code. It's free for up to 3 developers, you'll be able to upgrade your account once you grow, its fast and it's SAFE.

Rob Fonseca-Ensor
+7  A: 

Mercurial would be my pick for version control for a project starting as a solo project if you don't want to set up a dedicated server. Mercurial requires no server because it's a distributed VCS, every working copy is also a complete repository, so once you've installed Mercurial you are ready to go, just type 'hg init' in the root directory of your project and you're off.

It's perfect for working alone or with a small number of developers (i.e. no IT staff or sysadmins available), it has a utility that lets you quickly set up a temporary server for your local repository so when you meet up with people it's easy for them to clone the repository or share changes. You can also just give people copies of your repository over email or USB key or copy them over the network or whatever and reconcile changes to the copies against each other later.

For me Mercurial made the difference between actually using a VCS for personal projects and just giving up because it's too much trouble. Setting up a Subversion server locally isn't a huge deal but it's still enough trouble to make me not bother, and if you really want to be thorough you'd want to think about how to do proper backups, etc. With Mercurial at any point you can just back up your working copy to other media and you have a backup. I don't know if this really makes sense but Mercurial is a VCS that you can use casually and informally thanks to the distributed nature.

No Xcode integration, but having used various VCS' with and without integration I don't think it's very important as long as good clients are available. These days I've mostly settled on just going command line and it's refreshing.

Perforce, IMO, is right out. Aside from being a commercial product it is obnoxious beyond belief. It requires you to be connected to a server at all times or things become a major pain in the ass. So if you just want to work on stuff from multiple machines in multiple locations or if you want to have people on the project that won't be on the same network all the time it's going to suck. Perforce just constantly beats you over the head with the fact you are using Perforce, no other VCS I've used is so in your face and annoying.

Git is another option with a similar feature set to Mercurial that might be worth looking at. In my case I also do Windows stuff and Git's Windows support is supposedly crap so I went with something that works on all my platforms.

Build automation IMO is the build server's job, not the VCS' job, so if you want build automation find an appropriate build server.

Whatever
billlmaya: In case you've upgraded to Mac OS X 10.6 since your original post, I highly recommend taking a look at MacHg (http://jasonfharris.com/machg/). Unless Apple has grand plans for massive improvements in the (already much-improved) scm integration in today's version of Xcode4, MacHg's ease of use and depth of features puts every other visual scm client I've seen to date to shame.
clozach