On Sat, 25 Nov 2017 02:35:04 -0500, Yuya Nishihara <y...@tcha.org> wrote:

# HG changeset patch
# User Yuya Nishihara <y...@tcha.org>
# Date 1511593310 -32400
#      Sat Nov 25 16:01:50 2017 +0900
# Node ID b6e526ee5d2662ca30a555ca51264b3e371fe44e
# Parent  38e952030f0c4746257280d47f0f94b6cb9ddb41
cat: do not instantiate subrepo if no potential match in it

This fixes the test failure in hg-git.

https://bitbucket.org/durin42/hg-git/issues/227/

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -3068,6 +3068,8 @@ def cat(ui, repo, ctx, matcher, basefm,
         err = 0
    for subpath in sorted(ctx.substate):
+        if not matcher.visitdir(subpath):
+            continue

The basematcher contract says the result is undefined if False is returned for any parent directory. Do we need a subrepo utility method to break up the subpath and test top down? Consider 'directory/subrepo', where 'directory' is excluded.

It's probably beyond the scope of what you were fixing, but should all subrepo recursion be guarded like this?

         sub = ctx.sub(subpath)
         try:
             submatch = matchmod.subdirmatcher(subpath, matcher)
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to