• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: What VCS do you use with xCode?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What VCS do you use with xCode?


  • Subject: Re: What VCS do you use with xCode?
  • From: Rob Lockstone <email@hidden>
  • Date: Sun, 22 Mar 2009 12:03:17 -0700


On Mar 22, 2009, at 10:58, Nick Zitzmann wrote:


On Mar 22, 2009, at 8:22 AM, Panagiotis Atmatzidis wrote:

Which system do you think is the best to use with xCode for VCS small projects?


Well, you have a number of free choices (e.g. CVS, Subversion, Bazaar, Mercurial, and Git) and a few commercial choices. I've used the above five free choices, and here is what I think about them: (+ is good, - is bad)

CVS:
+ It works - usually
+ Tagging support
- Folders can be created but not deleted
- Files and folders cannot be renamed once checked in (without blowing away history)
- Commits are not atomic
- It's a C2S application, so if the server is down, you're hosed


Subversion: Pretty much the same as CVS, except...
+ Folders can be deleted
+ Files and folders can be renamed
+ Existing files and folders can be copied
+ Commits are atomic
- No real tag support; you have to use subfolders (or other repositories) and pretend they are tags
- Under absolutely no circumstances must you ever use the BDB back- end; they are trivial to corrupt, a pain to upgrade, and don't work if you switch CPU architectures

I don't think you're giving subversion's notion of tagging a fair judgement. If coming from a cvs-style of tagging, subversion's tagging can be difficult to get your head around. In subversion, tagging is exactly the same as branching. If you organize your repository appropriately (using, for example, trunk, branches, and tags directories), it's extremely elegant. First of all, it's lightning fast (totally the opposite of cvs!) even with large projects. The "trick" is that everyone who accesses the repository agrees that anything in the "tags" directory is not allowed to be modified. The beauty of it, from my perspective, is that you *can* modify it (it's just a branch, after all) if you're in a situation that requires very fast turnaround, for example making a small bug fix or text change or something in code that's already been put into production. You can make the change in your tag, push it out, and then go back and make the change in the corresponding branch and, of course, the trunk. Secondly, creating branches and tags is trivial and doesn't make copies (just deltas if/when changes are made).


We have our release process organized around subversion's notion of trunk (goes to development servers), branches (goes to test servers), and tags (goes to staging and then production servers). Because subversion is so fast, when we branch (or tag), we branch (or tag) the ENTIRE code base, complete with the build environment and project files, making it a snap to know *exactly* what's running in any of our environments at any point in time. Converting from cvs to subversion and reorganizing our build and deploy process using subversion's branching and tagging has greatly improved our ability to keep our code organized and spend more time developing and releasing and less time fighting with our repository.

Personally, I hope subversion never implements "real tag support". ;)

Rob

Bazaar and Mercurial: Similar to Subversion, except...
+ They're distributed applications, so no server = no problem
+ Tagging support
+ No BDB back-end
- Initially checking out a project takes a very long time
- Xcode doesn't support them, and the Xcode developers are apparently in no rush to support them (but there are third-party GUI solutions available)


Git: Similar to Bazaar and Mecurial, except...
+ In addition to adds and deletes requiring staging, modifications also must be staged
- The built-in GUI app is a little glitchy


The only SCM system I cannot recommend under any circumstances is CVS. If you're starting from scratch, then I would recommend Git, though Bazaar and Mercurial are nice too. Subversion was kind of neat five years ago, and was a big improvement over CVS, but I wouldn't start with it now.

I've never used the commercial systems before, so I can't comment on them.

Nick Zitzmann
<http://seiryu.home.comcast.net/>

_______________________________________________ Do not post admin requests to the list. They will be ignored. Xcode-users mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >What VCS do you use with xCode? (From: Panagiotis Atmatzidis <email@hidden>)
 >Re: What VCS do you use with xCode? (From: Nick Zitzmann <email@hidden>)

  • Prev by Date: Re: What VCS do you use with xCode?
  • Next by Date: Re: What VCS do you use with xCode?
  • Previous by thread: Re: What VCS do you use with xCode?
  • Next by thread: Re: What VCS do you use with xCode?
  • Index(es):
    • Date
    • Thread