Re: What VCS do you use with xCode?
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