On 12/20/2016 06:00 AM, Rodrigo Damazio wrote:
Unfortunately, while set would match the right files, because of the way
the code is structured, it provides no way to not try visiting the
directories inside the non-recursive match - the set needs to first
collect all the files in all subdirectories (match.py, _expandset) and
then filter that down to the desired ones. In plain hg repos, that's
just much slower - in the context of narrowhg, the repo will simply not
have the manifests for those subdirectories and trying to visit them
will crash.
Okay, so this seems like the current tools allow you to specify the
right request but shortcoming of the -implementation- are preventing
that request to work probably with narrowhg (and have performance impacts)
Did I got that right ?
The follow-up change to this one (which I haven't sent yet but is
written) is updating visitdir to allow non-recursiveness, which btw
makes something like "hg files -I rootglob:browser/*" about 4-5x faster
in the firefox repo.
And, If I read you right, the implementation of 'rootglob:' you provided
in your patch have the same implementation issue, but you have another
patch to improve the implementation to behave a way you can use (and is
faster).
Did I got that right too ?
If I got these two pieces right, it looks like we could just apply the
improvement to 'visitdir' to 'set:your/glob/*' and have your usecase
filled while not jumping into UI changes. Would that work for you ?
On Fri, Dec 16, 2016 at 6:21 AM, Pierre-Yves David
<pierre-yves.da...@ens-lyon.org <mailto:pierre-yves.da...@ens-lyon.org>>
wrote:
On 12/16/2016 02:19 AM, Augie Fackler wrote:
On Nov 24, 2016, at 10:28 AM, FUJIWARA Katsunori
<fo...@lares.dti.ne.jp <mailto:fo...@lares.dti.ne.jp>> wrote:
Yes, "files:" was the original version of this patch
and the case I really
care about :) I changed it to rootglob after your
comments.
Which way would be preferred to move forward?
"files:" is "path:" family, and "rootglob:" is "glob:"
family. As we
concluded before, "path:" itself can't control recursion of
matching
well.
Therefore, I think that "files:" should be implemented if
needed,
regardless of implementing "rootglob:".
Of course, we need high point view of this area, at first :-)
BTW, it is a little ambiguous (at least, for me) that
"files:foo"
matches against both file "foo" and files just under directory
"foo". Name other than "files:" may resolve this ambiguity,
but I
don't have any better (and short enough) name :-<
========== ==== ======= ===========
pattern foo foo/bar foo/bar/baz
========== ==== ======= ===========
path:foo o o o
files:foo o o x
file:foo o x x
dir:foo x o o
========== ==== ======= ===========
Scanning the plan page, I see that there’s a *lot* of work that
could be done and no consensus as yet, but that the only
immediate use case seems to be the rootfile/rootglob case. Is
there some path forward we could agree on that would unblock
those immediate needs for narrowhg and not make things harder in
the future?
Alternatively, would we be okay with a slight refactor of the
matcher so that narrowhg can introduce a custom filesonly:
matcher for the time being so we can keep making forward
progress there? I don’t know the matcher code well enough to be
able to guess if this is a reasonable path so we can be unblocked.
(It’s very hard for to justify the amount of work implied by
reaching consensus on FileNamePatternsPlan and then executing
the entire thing when what we need is solvable today with a
sub-hour patch to existing code, thus my trying to find a
solution we can all live with.)
As far as I understand, Foozy finding shows that the feature
narrowhg needs is already there and nothing new is necessary.
You can add "set:" in front of your glob to make it non recursive in
all cases "set:your/directory/you/want/to/match/files/in/*"
If this does not fits your needs, this probably mean I got your
usecase wrong. In that case can you re-explain the issue you are
trying to solve here?
At the project level, it will make sense to clean up the Pattern
Matching at some point, and Foozy wiki work will help us to do that.
Cheers.
--
Pierre-Yves David
--
Pierre-Yves David
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel