presenting the fundamental abstractions

Matthew D. Fuller fullermd at
Wed Sep 12 01:50:04 BST 2007

On Wed, Sep 12, 2007 at 10:40:55AM +1000 I heard the voice of
Andrew King, and lo! it spake thus:
> Does that mean that the revision internally stores a file? I assumed
> it stored a set of "patches", and possibly the latest version of a
> file.

Well, that gets back to concepts vs. nuts and bolts.  What it
internally stores may be a fragment or a patch or a set of line refs
into a weave or a can of Dehydrated Project (just add water).  But
what it conceptually represents is a particular tree state.  There is
this set of files, which these contents, arranged in directories just
so.  Each revision is what somebody's working copy looked like [aside
from ignored/unknown files] at the time they punched the 'commit'

> Why does it need a parent?

Well, that ties in with defining a branch, and also how things like
merge/pull work.  Ancestry is a central point (see mtn for a differing
view); every revision points somewhere and says "that came before me".
In a sense, every revision depends on and "contains" (conceptually)
its predecessors, which is why cherrypicking isn't a trivial problem
already implemented.  It's why, in a sense (as the git people are so
fond of trumpetting), a branch is really just a pointer to a single
revision; because the history is implicit in that.

Matthew Fuller     (MF4839)   |  fullermd at
Systems/Network Administrator |
           On the Internet, nobody can hear you scream.

More information about the bazaar mailing list