hg versioning vs. CVS versioning

Mark Williamson mark.williamson at cl.cam.ac.uk
Sun Dec 9 23:49:12 UTC 2007


> As an old school CVS user, I was used to the *file with version...* that
> CVS has. I really can't get used to the *whole repository version* that
> SVN and hg have. Is there a reason for this? Isn't is better to have
> versiones per-file?

Changesets allow you to group logically related revisions to files into one 
big revision.  It's a higher level of semantics.

So instead of committing frontend.c with "Improve function call interface" and 
then committing backend.c with "Update function calls to match new interface 
in frontend.c" I can commit changes to both with something like "Improve 
backend/frontend function call interface".  When I browse the history I can 
see the diffs for the two files together as part of this changeset.

Grouping logically related changes like this means that (at least in 
principle) you can step back through the history of the repository and build 
it *at any changeset* and expect to have the files all match up and build 
together (assuming you made sure they all built when you checked them in!).

You can still view the history of a single file, which will tell you which 
changesets modified that file.  You can also check out the state of an 
individual file or files as-of a previous changeset if you want to go back to 
an earlier version.

Cheers,
Mark


-- 
Dave: Just a question. What use is a unicyle with no seat?  And no pedals!
Mark: To answer a question with a question: What use is a skateboard?
Dave: Skateboards have wheels.
Mark: My wheel has a wheel!



More information about the Mercurial mailing list