Partly this is to partly report bug, and partly to document a solution where darcs is getting stuck or being very very VERY slow at "Removing from pending:" or "Done removing from pending:" when recording changes, possibly particularly when adding new files.

Short version for people from the future (http://xkcd.com/979/); if you find yourself in a performance blackhole when trying to record patches, try doing a darcs get to create a fresh copy of the repo and record your changes in there.

=-=-=-=-=-=-=-=-=-=

So here's the situation, adding a bunch of stuff to an existing repository, in total around 70 meg, but I tried splitting it up into small patches (by recording some sub directories individually) to be kind, up to about 10 m would be the largest total patch.

These are new files the repo has never seen before. They are mostly textual.

It was taking an AGE, and I mean GLACIAL.

Without --debug-verbose it gets up to "Removing from pending: X done, Y queued", at which point that is the last output while it grinds to a halt, a CPU core spinning like mad. For minutes.. hours.. days? Before finally it realises it doesn't need to heat my office with CPU power, just record a patch :)

Turning on --debug-verbose actually shows that it gets one step further to "Done removing from pending:" before the cpu grinding begins and no further output is shown (for a VERY long time or until I give up on recording that patch, CTRL-C and try recording another subset (directory)).

Now, I created a tag right before I started this epic patch recording. So, on a whim I did...
  darcs get --lazy -t mytag slowrepo newrepo
  cp -rP slowrepo/newstuff newrepo/newstuff
and tried recording the new stuff from in there (again in chunks).... kapow, done in milliseconds.

Again, on another whim I tried even simpler...
  darcs get slowrepo anothernewrepo
  cp -rP slowrepo/newstuff anotherrepo/newstuff
and tried recording from in there.... again, all over in a snap of the fingers, worked perfectly.

So, in short, I have one repo that when trying to record added files into it takes millenia, while adding those same files to a simple "darcs get" (without any options) copy of that repository, takes seconds, milliseconds even.

So there you go people from the future; if you find yourself in a performance quandry when trying to record patches, try doing a darcs get to create a fresh copy of the repo and record your changes in there.

Further Information For Darcs Developers If It Helps
-----------------------------------------------------
darcs optimize, and optimize --reorder both run, no affect, darcs check reported no problems.

strace for a few seconds while the old repo it is in this churning state is here:
    http://sirius.gogo.co.nz/d.txt
but it doesn't look very interesting to me.

Darcs version 2.8 (static build downloaded from website), same deal with 2.7.99.1 (Ubuntu 12.04 default).

If there is anything else I can do (aside from posting the repo, which unfortunately is all confidential like :-/), happy to help.

---
James Sleeman


_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to