[PATCH 1 of 2] cat: record the current behavior of wildcard matches in subrepos

Matt Harbison mharbison72 at gmail.com
Sun Dec 3 12:55:36 EST 2017


On Sun, 03 Dec 2017 05:22:51 -0500, Yuya Nishihara <yuya at tcha.org> wrote:

> On Sun, 26 Nov 2017 19:26:24 +0900, Yuya Nishihara wrote:
>> On Sat, 25 Nov 2017 23:37:16 -0500, Matt Harbison wrote:
>> > On Sat, 25 Nov 2017 02:35:03 -0500, Yuya Nishihara <yuya at tcha.org>  
>> wrote:
>> >
>> > > # HG changeset patch
>> > > # User Yuya Nishihara <yuya at tcha.org>
>> > > # Date 1511591374 -32400
>> > > #      Sat Nov 25 15:29:34 2017 +0900
>> > > # Node ID 38e952030f0c4746257280d47f0f94b6cb9ddb41
>> > > # Parent  8287df8b7be545fdafa22b771012ac65f6264d12
>> > > cat: record the current behavior of wildcard matches in subrepos
>> > >
>> > > It appears that Mercurial subrepo supports any match patterns.
>> > >
>> > > diff --git a/mercurial/help/subrepos.txt  
>> b/mercurial/help/subrepos.txt
>> > > --- a/mercurial/help/subrepos.txt
>> > > +++ b/mercurial/help/subrepos.txt
>> > > @@ -90,7 +90,7 @@ Interaction with Mercurial Commands
>> > >  :archive: archive does not recurse in subrepositories unless
>> > >      -S/--subrepos is specified.
>> > > -:cat: cat currently only handles exact file matches in subrepos.
>> > > +:cat: cat currently only handles exact file matches in Git  
>> subrepos.
>> >
>> > Should this be "cat currently only handles pattern matches in  
>> Mercurial
>> > subrepos"?  The test above this new inexact match test is for an  
>> exact hg
>> > match.  Git bails early on m.anypats().
>>
>> Hmm, how about this?
>>
>>   Git subrepositories only support exact file matches. Subversion
>>   subrepositories are currently ignored.
>
> Oh, subrepos. "cat" is recursive by default, but "files" and friends  
> aren't.
> Is this a bug of "cat"?

Seems like it.  I fixed "files" in 97175d9bf7cf to not recurse by  
default.  I think the issue here is the matcher is .always(), so the  
subdirmatcher is also .always().  Seems like another argument for the  
single ctx.walksub() you proposed, because there are probably several ways  
these cmdutil functions are trying to do the same thing.

This is as good a place as any to ask- when do we follow through on the  
Subrepo Grand Plan? [1]  It seems that the long term plan was to always  
recurse by default, and this -S stuff was a bandaid for issues resolved  
long ago.  I wouldn't do it this cycle, given that we are have way  
through.  There are probably a few things that might need fixing first.   
(I'm thinking `hg serve --web-conf` doesn't know how to recurse, and I'm  
sure there are a couple of other odd cases.)  Maybe we will want an  
experimental flag to ease into it.

[1]  
https://www.mercurial-scm.org/pipermail/mercurial-devel/2011-October/034816.html

>   $ hg files 'glob:**'
>   .hgsub
>   .hgsubstate
>
>   $ hg cat -T '{path}\n' 'glob:**'
>   .hgsub
>   .hgsubstate
>   sub/file


More information about the Mercurial-devel mailing list