Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GIT vs. CVS vs. SVN



On 11/09/2010 03:32 PM, Jerry Feldman wrote:
> Our office has been adding some new developers, and I've been asked to 
> set up GIT. Fortunately our company supports GIT, but the R&D main 
> source control system is CVS. I'm looking for some rational discussion 
> from developers who have used both GIT and either CVS or SVN. Linus has 
> standardized on GIT for kernel development.
> 
> There is a conceptual shift when using GIT vs. the traditional 
> centralized repository approach using CVS.

I haven't used Git a lot, but when I did I was pretty impressed.  It's
not trivial to re-learn how to do version control though, which can make
it somewhat of a barrier for people used to CVS/SVN.

SVN is a no-brainer drop-in for CVS.  The only real changes are
unlearning the horrible hacks that CVS trained people to do because of
it's serious flaws (directories aren't versioned, moving/renaming files
is best left to experts, grouping a bunch of files as a single commit, etc).

You don't necessarily give up any power with Git, but it definitely
takes some getting used to.  For instance, with SVN, when we'd use a lot
of branching, the group would typically leave it up to one person to do
merges (a merge-master as it were).  This kept the overhead down in
terms of training people on how to do merges properly.

With Git, everyone has to be proficient in doing merges, since that is
the primary activity you'll be doing with your repos.  Which isn't a bad
thing in the long run.  The good news is Git offers much better tools
for doing the merges.  SVN's support for merges historically sucked; it
kept track of NOTHING for you, so you had to rely on convention (hence
the 'merge-master').  Supposedly it's much better in svn-1.6+, but I
haven't had a large project that I've been able to migrate the
server-side over to 1.6 in order to really try it out.

Git is great for traveling and impromptu integration meetings.  SVN was
a step up from CVS when the central server wasn't available, in that you
could always revert back to the last checked-out version without any
network access.  With Git, you can make incremental commits locally, and
share them with local people, all without phoning home.

HTH,
Matt






BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org