presenting the fundamental abstractions
Matthew D. Fuller
fullermd at over-yonder.net
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
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 over-yonder.net
Systems/Network Administrator | http://www.over-yonder.net/~fullermd/
On the Internet, nobody can hear you scream.
More information about the bazaar