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?).

Cheers,
        Simon



_______________________________________________
darcs-users mailing list
[EMAIL PROTECTED]
http://www.abridgegame.org/mailman/listinfo/darcs-users



_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to