• 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: Version Control [was: Damaging the source code]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Version Control [was: Damaging the source code]


  • Subject: Re: Version Control [was: Damaging the source code]
  • From: Jens Alfke <email@hidden>
  • Date: Mon, 2 Nov 2009 10:17:11 -0800

2009/11/1 Ben Haller <email@hidden>:
I, for one, would like to hear people's opinions of the best version
control system for use by independent programmers (i.e. where the choice is
not dictated by the company or team you're working with). What's easy to
set up, easy to use with Xcode, reliable, etc.? I've been ignoring this
issue for a long time, but it's about time I started paying attention to
it...

Subversion, Git and Mercurial are the main contenders. I'm a Mercurial fanboy (I even wrote a GUI client for it), but will use Git despite its bizarre command set. I'll put up with Subversion when working with projects that use it, like at work, but would never host my own projects with it.


My recommendation is to use Mercurial. There's a double-clickable Mac installer, the command set is easy to learn if you're used to Subversion, and the workflow is great compared to an old-school VCS. Bitbucket.org is a great place to host public repos, even if it isn't as fancy as its idol Github.

Here's a somewhat-objective list of pros and cons.

Subversion:
+ Xcode supports it, so you can do most operations right in the IDE.
+ The most popular system (I think) currently.
+ Several 3rd party GUI interfaces (Versions, Cornerstone, TortoiseSVN, ...)
- Requires a server
- Making a repository requires configuring server
- Can't use most of its functionality if you're offline
- Slow unless your server is local
- Running your own server is a PITA
+ Lots of sites will host repos for you (Google Code, SourceForge, etc.)
- Repository can only be hosted in one place
- Branching/merging is pretty clumsy
- Splatters ".svn" directories all over your source tree


Git:
+ Lots of momentum
+ Fast
+ Very powerful command set, esp. for manipulating branches and merging
+ Distributed
+ Trivial to convert any source tree into a repository
+ Good Subversion interface (lets you mirror an SVN repo and work with it using Git)
+ Excellent public repository hosting via GitHub
- Commands have unusual names
- Basic source-file workflow (add / modify / commit) is confusingly different from anything else, until you get used to it
- Limited GUI support (not sure if there are any Mac apps?)
- Complex installation, adds dozens of commands to your path
- Repositories are not very space-efficient
- Poor Windows support (if that matters to you, i.e. for cross- platform code)


Mercurial:
+ Reasonably fast (unless you have a huge repository like the Linux kernel)
+ Command syntax is a lot like Subversion's, making for an easy learning curve
+ Add / modify / commit workflow is very much like Subversion
+ Distributed
+ Trivial to convert any source tree into a repository
+ Excellent cross-platform support (it's written in Python)
+ Small, easy to install
+ Can easily host repos on any server that you can SSH into and install Mercurial on (e.g. Dreamhost).
+ Quite-good public repository hosting via Bitbucket or Google Code
+ Compact repository structure
- Limited GUI support (there's my Murky app, and TortoiseHg)
- Merge/branch commands not quite as powerful as Git
- SVN integration not ready for prime-time yet


(There are a few other contenders, like Bazaar, Darcs and Monotone, but they seem to be falling behind.)

—Jens _______________________________________________
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


  • Follow-Ups:
    • Re: Version Control [was: Damaging the source code]
      • From: Jonathan del Strother <email@hidden>
    • Re: Version Control [was: Damaging the source code]
      • From: James Walker <email@hidden>
    • Re: Version Control [was: Damaging the source code]
      • From: Marco S Hyman <email@hidden>
References: 
 >Damaging the source code (From: email@hidden)
 >Re: Damaging the source code (From: Jonathan del Strother <email@hidden>)
 >Re: Damaging the source code (From: Jonathan del Strother <email@hidden>)

  • Prev by Date: Re: GC Settings Missing in New FW Projects?
  • Next by Date: Re: GC Settings Missing in New FW Projects?
  • Previous by thread: Re: Damaging the source code
  • Next by thread: Re: Version Control [was: Damaging the source code]
  • Index(es):
    • Date
    • Thread