Tue, 28 Oct 2014 14:06:06 -0700 revset: fix O(2^n) perf regression in addset stable
Durham Goode <durham@fb.com> [Tue, 28 Oct 2014 14:06:06 -0700] rev 23100
revset: fix O(2^n) perf regression in addset hg log -r 1 ... -r 100 was never returning due to a regression in the way addset computes __nonzero__. It used 'bool(self._r1 or self._r2)' which required executing self._r1.__nonzero__ twice (once for the or, once for the bool). hg log with a lot of -r's happens to build a one sided addset tree of N length, which ends up being 2^N performance. This patch fixes it by converting to bool before or'ing. This problem can be repro'd with something as simple as: hg log `for x in $(seq 1 50) ; do echo "-r $x "; done` Adding '1 + 2 + ... + 20' to the revsetbenchmark.txt didn't seem to repro the problem, so I wasn't able to add a revset benchmark for this issue.
Mon, 27 Oct 2014 23:47:41 -0500 tests: add missing glob for Windows stable
Matt Mackall <mpm@selenic.com> [Mon, 27 Oct 2014 23:47:41 -0500] rev 23099
tests: add missing glob for Windows
Mon, 27 Oct 2014 18:44:05 -0500 test-convert-svn-sink: properly isolate symlink section stable
Matt Mackall <mpm@selenic.com> [Mon, 27 Oct 2014 18:44:05 -0500] rev 23098
test-convert-svn-sink: properly isolate symlink section This was fixed earlier by moving all the symlink bits to a section to the end of the file, but then it was broken (by the same person) by adding more tests at the end.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -3 +3 +10 +30 +100 +300 +1000 +3000 +10000 tip