changeset 44276:30862e226339

copies: avoid filtering by short-circuit dirstate-only copies earlier The call to `y.ancestor(x)` triggered repo filtering, which we'd like to avoid in the simple `hg status --copies` case. Differential Revision: https://phab.mercurial-scm.org/D8071
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 04 Feb 2020 10:16:30 -0800
parents 66dab0d9a78e
children 3245cdea2c63
files mercurial/copies.py tests/test-repo-filters-tiptoe.t
diffstat 2 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/copies.py	Tue Feb 04 10:14:44 2020 -0800
+++ b/mercurial/copies.py	Tue Feb 04 10:16:30 2020 -0800
@@ -403,13 +403,15 @@
         )
     if x == y or not x or not y:
         return {}
+    if y.rev() is None and x == y.p1():
+        if debug:
+            repo.ui.debug(b'debug.copies: search mode: dirstate\n')
+        # short-circuit to avoid issues with merge states
+        return _dirstatecopies(repo, match)
     a = y.ancestor(x)
     if a == x:
         if debug:
             repo.ui.debug(b'debug.copies: search mode: forward\n')
-        if y.rev() is None and x == y.p1():
-            # short-circuit to avoid issues with merge states
-            return _dirstatecopies(repo, match)
         copies = _forwardcopies(x, y, match=match)
     elif a == y:
         if debug:
--- a/tests/test-repo-filters-tiptoe.t	Tue Feb 04 10:14:44 2020 -0800
+++ b/tests/test-repo-filters-tiptoe.t	Tue Feb 04 10:16:30 2020 -0800
@@ -68,7 +68,6 @@
   ! b
 
   $ hg status --copies
-  debug.filters: computing revision filter for "visible"
   M c
   A d
   R a