copies: avoid filtering by short-circuit dirstate-only copies earlier
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 04 Feb 2020 10:16:30 -0800
changeset 44323 30862e226339
parent 44322 66dab0d9a78e
child 44324 3245cdea2c63
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
mercurial/copies.py
tests/test-repo-filters-tiptoe.t
--- 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