[darcs-users] Slow pull

Tommy Pettersson ptp at lysator.liu.se
Wed Nov 30 10:49:18 UTC 2005


On Mon, Nov 28, 2005 at 04:27:17PM +0100, Aaron Kaplan wrote:
> darcs pull between a particular pair of local repos is taking more than
> fifteen minutes on a relatively modern machine, even when there are no
> changes to pull.  Is this a bug, or is there really some complex
> computation needed to determine that there are no changes to pull?  I
> would have thought it was a simple subset test, and there are fewer than
> 100 patches total between the two repos.
> 
> I'm using darcs 1.0.4.  The repos are about 140M, which is significantly
> bigger than the other projects I've tried managing with darcs.

I don't really know darcs deep enough to answer this question,
but I'll toss some ideas.

When darcs compares two repos it can't assume the patches are
stored in the same order in the two repos, so it performs a
potentially complicated computation to find out what patches
are common and unique between the repos. If darcs needs to
change the order of some patches that have been transformed to
mergers due to conflicts, I think it can become exponential,
but I don't know.

Anyway, darcs can optimize away parts of this common/unique
calculation if the two repos: share a common tag, have been
optimized with that tag, and there are no "out of order"
patches "before" that tag.  You can get "out of order" patches
if you Pull a tag that tags some but not all patches in the
repo. You must use the --reorder option with Optimize to move
such patches to after the tag.

The preferred way is to Tag and Optimize regularly.  Then darcs
only needs to look at "new" patches most of the time.


-- 
Tommy Pettersson <ptp at lysator.liu.se>




More information about the darcs-users mailing list