[PATCH 3 of 4] largefiles: shortcircuit status code also for non-matching patterns
Mads Kiilerich
mads at kiilerich.com
Sun Nov 2 19:18:21 CST 2014
On 11/02/2014 10:43 PM, Martin von Zweigbergk wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz at google.com>
> # Date 1414789907 25200
> # Fri Oct 31 14:11:47 2014 -0700
> # Branch stable
> # Node ID b89ddc59955d4ffc106c8566af52111f7d52f718
> # Parent 306755539e7e90d6ab8d5dccd68fc8b07042636a
> largefiles: shortcircuit status code also for non-matching patterns
>
> We currently shortcircuit the checking for large file standins if only
> patterns of type 'path' are given on the command line. That makes e.g.
> "hg st 'glob:foo/**'" unnecessarily slow when the only large files are
> in a sibling directory.
>
> Relax the check to be that it is not an always-matcher and that no
> large files match the patterns given on the command line.
>
> Note that before this change, only the latter of the following two
> would show the status of files in .hglf (since the -I makes
> match.anypats() true). After this change, they both display the
> status. This behavior doesn't seem correct, but it would be a separate
> change to explicitly filter out .hglf even in the shortcircuit case.
>
> hg st .hglf/$file
> hg st .hglf/$file -I .
> diff --git a/hgext/largefiles/reposetup.py b/hgext/largefiles/reposetup.py
> --- a/hgext/largefiles/reposetup.py
> +++ b/hgext/largefiles/reposetup.py
> @@ -102,12 +102,12 @@
> except error.LockError:
> pass
>
> - # First check if there were files specified on the
> - # command line. If there were, and none of them were
> + # First check if paths or patterns were specified on the
> + # command line. If there were, and they don't match any
> # largefiles, we should just bail here and let super
> # handle it -- thus gaining a big performance boost.
> lfdirstate = lfutil.openlfdirstate(ui, self)
> - if match.files() and not match.anypats():
> + if not match.always():
> for f in lfdirstate:
> if match(f):
> break
This all seems very reasonable ... and if not, we will find out and get
a good test case.
But please, if this make us able to handle more cases, add test cases
for them.
/Mads
More information about the Mercurial-devel
mailing list