Siddharth Agarwal <sid0@fb.com> [Fri, 14 Nov 2014 23:44:38 -0800] rev 23334
ancestor.missingancestors: turn into a state-keeping class
This allows multiple efficient missing ancestor queries against the same set of
bases. In upcoming patches we'll also define ways to grow the set of bases.
The fact that the test output hasn't changed establishes this patch's
correctness.
Siddharth Agarwal <sid0@fb.com> [Fri, 14 Nov 2014 13:47:25 -0800] rev 23333
ancestor.missingancestors: calculate start point after filtering revsvisit
Any revs that are filtered out are also in basesvisit, which means they
wouldn't be returned in the missing list anyway. There's no need to explore
such revs or their ancestors.
The 'if not revsvisit' check moves down because we can't call max() on an empty
set.
Siddharth Agarwal <sid0@fb.com> [Fri, 14 Nov 2014 11:33:52 -0800] rev 23332
ancestor.missingancestors: don't discard from basesvisit
We only actually care about whether revsvisit is empty, so we can let
basesvisit grow to arbitrary size.
It turns out that this actually helps performance. For a large repo with
hundreds of thousands of commits, hg perfrevset 'only(0, tip)' (basically the
worst case, involving a full DAG traversal) goes from 1.63 seconds to 1.50. hg
perfrevset 'only(tip, 0)' remains unchanged at 1.98 seconds.
Siddharth Agarwal <sid0@fb.com> [Sat, 15 Nov 2014 10:55:34 -0800] rev 23331
test-ancestor: use random testing for missing ancestors
We're going to make changes to the missing ancestor algorithm, and random
testing will give us much more confidence than a fixed set of tests.
Siddharth Agarwal <sid0@fb.com> [Sat, 15 Nov 2014 18:52:44 -0800] rev 23330
test-ancestor: define a main function
We're going to add to it in upcoming patches.
Siddharth Agarwal <sid0@fb.com> [Fri, 14 Nov 2014 14:50:03 -0800] rev 23329
test-ancestor: test iteration for lazyancestors
This has some test coverage in test-revlog-ancestry.py, but not very much.
Siddharth Agarwal <sid0@fb.com> [Fri, 14 Nov 2014 14:36:25 -0800] rev 23328
ancestor.lazyancestors: take parentrevs function rather than changelog
Principle of least privilege, and it also brings this in line with
missingancestors.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Nov 2014 00:24:23 -0500] rev 23327
remove: avoid a bogus warning about no tracked files when removing '.'
Previously, any files relative to the root of the repo that match the -I
patterns would be deleted, but the command exited with 1 after printing a
warning:
$ hg remove -S -I 're:.*.txt' .
removing sub1/sub2/folder/test.txt
removing sub1/sub2/test.txt
not removing .: no tracked files
Matt Harbison <matt_harbison@yahoo.com> [Wed, 12 Nov 2014 23:15:20 -0500] rev 23326
remove: support remove with explicit paths in subrepos
Matt Harbison <matt_harbison@yahoo.com> [Sat, 15 Nov 2014 21:36:19 -0500] rev 23325
remove: recurse into subrepositories with --subrepos/-S flag
Like 'forget', git and svn subrepos are currently not supported. Unfortunately
the name 'remove' is already used in the subrepo classes, so we break the
convention of naming the subrepo function after the command.