[darcs-users] How does checkpointing work?
Tommy Pettersson
ptp at lysator.liu.se
Thu Oct 27 00:13:22 UTC 2005
On Wed, Oct 26, 2005 at 04:59:06PM -0400, Kurt Hutchinson wrote:
> I've read the description of checkpointing (darcs optimize
> --checkpoint) in the manual, but I don't understand how it works. I'm
> just curious. If a tag depends on all patches currently in the repo,
> how does that minimize the amount you have to download with a 'get'?
> Won't you just be getting every patch back to the beginning of the
> project (because they're all dependencies, either directly or
> indirectly)?
This only works with partial repos (darcs get --partial).
The repo "history" (not time based) information is split
into patches and inventory. The inventory lists what patches
the repo contains and describes how they are combined. The
patches just contain the individual changes. Darcs can do a
lot of things with only the inventory.
A checkpoint is a special patch that represents the total
change of all patches up to the tag (and is usually much
smaller then all the original patches together). When darcs
creates a partial repo it fetches the checkpoint and applies
it, which has the same result as would have applying the real
patches one after another. Darcs also fetches and installs
the inventory. Now it looks like the real patches are there
and dependencies are thus seemingly fulfilled. The "fake"
is unveiled as soon as darcs wants to examine the contents
of one of the missing patches, which may be never, depending
on what kind of work you do with the repo.
--
Tommy Pettersson <ptp at lysator.liu.se>
More information about the darcs-users
mailing list