[darcs-users] CVS-style development with darcs

Juliusz Chroboczek jch at pps.jussieu.fr
Fri Jul 2 18:12:35 UTC 2004

> How bad is the behaviour of darcs with large trees ?

Every working dir costs as much as twice the size of the tree plus
whatever is taken by _darcs/patches.

You'll need roughly 2.5 times as much physical memory as the size of
your tree in order to perform an initial import in reasonable time.
Once you've done the initial import, memory requirements become much
more reasonable.

(In principle, you could get away with swap, but I doubt it's

So with current machines, tens of megabytes are safe, hundreds aren't.
Which is okay for all but the largest projects.

> AFAIK, darcs has no way to split a darcs project, or join separate
> darcs projects.

Yes, it does :-)

Join is |darcs mv| in repo1, |darcs mv| in repo2, then pull repo2 into
repo1 (or the opposite.)

Split is clone repo1 to repo2 (|darcs get|) followed with a bunch of
|darcs rm| in either repo.  Of course, you'll need to 
|darcs optimize --checkpoint| and |darcs get --partial| in order to
get the performance benefits of the split.

> CVS never throws away ones work, even if it has not been committed (unless
> one insists on doing a release -d).
> Is there any circumstance where darcs throws away work ?

  darcs get /var/darcs/polipo-unstable
  darcs record -m 'Bug fix.' --all
  darcs push
  darcs push /var/darcs/polipo-stable
  darcs record -m 'Cool new feature.' --all
  darcs push --all
  -- oops, I've just pushed all of unstable into stable.  How do I recover?

With CVS, merging is sufficiently difficult so that you'd never make
that sort of mistake.  If you ever did, it's easy enough to recover
because CVS keeps history. (cvs update -r 'five minutes ago')

Here, darcs is too powerful for your good.  Hence, I'm trying to make
darcs less powerful by default, and require --force flags for poten-
tially dangerous things.

> > setup stable to have level -1, and all'd be fine.

> This seems wrong way around.

It is.  Sorry for the confusion.

> switch sounds like a useful command, however I am not sure whether it is
> really necessary.

Note that it also allows going back in time.  You can go back in time
with darcs unpull, but it's unsafe if you've got unpushed changes.


More information about the darcs-users mailing list