[Top][All Lists]

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

Re: Git/SVN/CVS? was Re: [Qemu-devel] What does code_copy_enabled do?

From: Rob Landley
Subject: Re: Git/SVN/CVS? was Re: [Qemu-devel] What does code_copy_enabled do?
Date: Mon, 11 Feb 2008 15:00:44 -0600
User-agent: KMail/1.9.6 (enterprise 0.20070907.709405)

On Saturday 09 February 2008 10:49:49 Johannes Schindelin wrote:
> Hi,
> On Sat, 9 Feb 2008, Felipe Contreras wrote:
> > Right now I can't use qemu because a bug introduced in the last months
> > and with git-bisect I probably would be able to fix it myself.
> Just clone git://repo.or.cz/qemu.git, then.

I've been using git://git.kernel.dk/data/git/qemu.git although I personally 
prefer mercurial.  (It's easier to learn and to use, you get the web viewer 
for free, etc.)

The thing is, git and mercurial are roughly equivalent, they're both 
distributed source control systems and you can losslessly convert from one to 
the other and back again, because they have all the same metadata.  (See 
http://kernel.org/hg/linux-2.6 as an example of a mercurial mirror of a git 

But the difference between centralized source control and distributed source 
control is huge.  The distributed ones store more information.  This means 
you can convert losslessly convert from svn->hg, but if you convert from 
hg->svn you lose information.  (So if you convert from hg->svn and then back 
from svn->hg, you have a different mercurial repository, and pulling from the 
original would be a bad idea because it would think it had lots of duplicate 

And of course CVS isn't even a full fledged centralized repository, it's an 
ancient holdover from the 1980's that doesn't even have the concept 
of "changesets".  (In cvs, changes are tracked in individual files.  Changes 
that touch multiple files at the same time have to be collated after the fact 
by comparing timestamps and hoping the descriptions match up.  This is a 
brittle heuristic at best; CVS hasn't got this _concept_.  Doing a binary 
search for the change that introduced a bug is amazingly painful with CVS, 
and even proposing tracking renames violates the design assumptions.  Even 
patch knows how to touch more than one file at a time; CVS does not.)

It is possible to use a distributed source control system as if it were a 
centralized source control system.  Just accept all changes as patches, never 
pulling directly from any other trees.  And thus you can hold off on learning 
new distributed source control concepts indefinitely.

> Hth,
> Dscho

"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]