Boost logo

Boost :

Subject: Re: [boost] [git] Mercurial?
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-03-22 13:09:20

on Thu Mar 22 2012, Martin Geisler <> wrote:

>> This kind of mental model is stimulated by git. It explains why git
>> users make a fuss about amending, rebasing and efficient branching and
>> merging.
> I'm afraid I don't agree with this. The version control systems that
> came after CVS switched to storing repository-wide snapshots. CVS was a
> collection of RCS files and so completely file-centric. SVN, Mercurial,
> Git, ... are all repository-centric. Conceptually they work by storing a
> series (linear or not) of working copy snapshots.
> Darcs is a possible exception to this: I think it might fit more closely
> to your unit-of-work model since it models the repository state as a
> result of a number of patches (units-of-work).

People get hung up on this all the time, but whether the storage format
is fundamentally snapshots or diffs is not really important. They're
isomorphic to one another. Git, like any other modern tool, provides
commands that support both views of the history. Rebase, for example,
treats your commits as units-of-work and "replays" that work on a new
base commit. Many other elements of the interface treat commits like

Dave Abrahams
BoostPro Computing

Boost list run by bdawes at, gregod at, cpdaniel at, john at