locate: explicitly use dirstate.matches() for working copy
`hg locate` is odd in that it includes files that have been removed
from the working copy. It relies on workingctx.matches() for that. I
want to make workingctx.matches() not include removed files, so this
patch makes `hg locate` handle the working copy differently instead.
Differential Revision: https://phab.mercurial-scm.org/D3710
--- a/mercurial/commands.py Mon Jun 11 11:37:21 2018 -0700
+++ b/mercurial/commands.py Mon Jun 11 09:47:07 2018 -0700
@@ -3333,7 +3333,13 @@
badfn=lambda x, y: False)
ui.pager('locate')
- for abs in ctx.matches(m):
+ if ctx.rev() is None:
+ # When run on the working copy, "locate" includes removed files, so
+ # we get the list of files from the dirstate.
+ filesgen = sorted(repo.dirstate.matches(m))
+ else:
+ filesgen = ctx.matches(m)
+ for abs in filesgen:
if opts.get('fullpath'):
ui.write(repo.wjoin(abs), end)
else: