[darcs-users] RE: [Haskell-cafe] fptools in darcs now available

Daan Leijen daan at cs.uu.nl
Sun May 1 11:31:21 EDT 2005

Simon Marlow wrote:

>But what worries me is: if I just want to check out e.g. Haddock, I have
>to get the entire fptools repo (350M+, wasn't it?).  I can build a
>source distribution with just the bits I want, but I can't get a darcs
>tree with anything but the whole lot.
>So, here's two potential solutions:
>  1. Make it possible to 'darcs get' just part of a tree.  Patches
>     that don't touch any files in the "live" parts of the tree
>     are discarded.  (I don't know if this is possible, or how
>     difficult it is).
I like this solution, especially now that David says that it is not
impossible to do. In general I think it is a good idea to be able
to get a part of the tree -- this might be very useful to handle
big projects like the linux kernel where many developers just need
to touch tiny parts of the repository.

However, I think that darcs should never "discard" patches: all patches
are always applied, and record works just as it normally works. The only
difference is that the absent part of the tree is treated as an
unobservable part of the tree -- patch applications to absent parts of the
tree are just void operations as they can not be observed. In this design,
a "darcs get" on a part of the tree is like building a special view on 
the tree.
(As such, the tree should probably still always start from the root -- one
would not be able to just get a bunch of leaves)

In this setup, I think darcs will still be able to transparently handle
patches that touch present and absent parts of the tree, and also moves
from absent to present parts etc.

In general, this feature might allow darcs to overcome most efficiency
problems associated with large repositories. Alas, I do not know how
much effort this feature might take (and I do not volunteer to do it), but
it does seem a potentially important one.

All the best,
-- Daan Leijen.

>  2. Create separate repositories for GHC, Happy, Haddock etc., and
>     duplicate the shared fptools structure in each project.  Each
>     time we modify something in the shared part of the tree, we
>     pull the patch into the other trees.  (is it possible to
>     cherry-pick from a tree that doesn't have a common ancestor?
>     If not, can we make the repositories appear to have common
>     ancestry?).
>	Simon
>darcs-users mailing list
>darcs-users at darcs.net

More information about the Haskell-Cafe mailing list