[Haskell-cafe] fptools in darcs now available

Simon Marlow simonmar at microsoft.com
Fri Apr 29 05:39:13 EDT 2005


On 28 April 2005 16:02, John Goerzen wrote:

>>> 3. Rename the smaller project's files as appropriate
>>> 
>>> 4. Checkpoint here
>> 
>> Won't that leave a lot of useless history in each individual project?
>> When I do 'darcs get' locally to check out a few sub-repositories,
>> won't I get N copies of all the old history?
> 
> Yes, but they'll all be hardlinked together, so no matter how many
> copies you get, the old history is only stored on disk once.

If I do 'darcs get' to get a bunch of different repositories from
cvs.haskell.org to my local filesystem, they won't all end up
hard-linked together, surely?

> I bet some darcs hacker could come up with a script that would even
> let us remove the patches from a descended repo that don't apply
> anymore. 

Now that sounds like a plan.

> I know it's not ideal, but trying to manually convert each part of the
> CVS repo, one at a time, is far, far less ideal.  Not something I care
> to attempt, anyway :-)

I don't understand why converting each part of the repo separately is so
hard?  (but I've never used the tools - I'm just curious about why it's
so difficult).

> The other thing is that having a big repo in darcs may turn out to be
> not as bad as we all thought at first.  The only really annoying thing
> there is how long it takes to do an initial darcs get (~5 min for me
> if I use --partial).  Other than that, darcs performs quite nicely.

I agree with your list of pros/cons, and just to be clear, I'm not stuck
on the idea of having a split repo.  In fact, the simplicity of a single
repo is very attractive.

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

  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

     


More information about the Haskell-Cafe mailing list