08.06
I’m listening to stackoverflow podcast #52 and Joel Spolsky just gave the best explanation of the difference between the Subversion / CVS generation of version control and the new Mercurial / Git / Distributed Version Control, the important part is bolded.
So this is why everybody is abandoning those version control systems that are of the Subversion generation and they’re moving to Mercurial and Git, and, to a lesser extent, the other distributed systems. There’s something that took me a while to understand about Mercurial, but fundamentally Mercurial is – Mercurial thinks of the world as a list of changes, and Subversion thinks of the world as a list of different versions of all your files. And so for Subversion to figure out where you are on a branch to do the merge, all it can do really is do a diff and say ‘well, I don’t know what happened, but the following things – we’re different from you guys in the following ways’, whereas Mercurial has this sort of added info of all the steps that were taken and all the transformations that were done, so it basically has more information to use in the merge and making the merge successful.

Git (another distributed version control system) thinks of the world as the list (to be more exact direct acyclic graph) of snapshots (versions of the whole project). It has no notion of versions of files (history of a single file), at least at conceptual level; you can get list of changes affecting single file.
Buy:Retin-A.Zyban.Human Growth Hormone.Nexium.Valtrex.Prevacid.100% Pure Okinawan Coral Calcium.Petcam (Metacam) Oral Suspension.Prednisolone.Synthroid.Accutane.Arimidex.Lumigan.Zovirax.Actos.Mega Hoodia….