mercurial/fileset.py
changeset 16443 9e02e032b522
parent 15963 042e84e39dee
child 17363 5d9e2031c0b1
equal deleted inserted replaced
16442:9181188ffb5b 16443:9e02e032b522
   356         p = mctx.ctx[f].parents()
   356         p = mctx.ctx[f].parents()
   357         if p and p[0].path() != f:
   357         if p and p[0].path() != f:
   358             s.append(f)
   358             s.append(f)
   359     return s
   359     return s
   360 
   360 
       
   361 def subrepo(mctx, x):
       
   362     """``subrepo([pattern])``
       
   363     Subrepositories whose paths match the given pattern.
       
   364     """
       
   365     # i18n: "subrepo" is a keyword
       
   366     getargs(x, 0, 1, _("subrepo takes at most one argument"))
       
   367     ctx = mctx.ctx
       
   368     sstate = ctx.substate
       
   369     if x:
       
   370         pat = getstring(x, _("subrepo requires a pattern or no arguments"))
       
   371 
       
   372         import match as matchmod # avoid circular import issues
       
   373         fast = not matchmod.patkind(pat)
       
   374         if fast:
       
   375             def m(s):
       
   376                 return (s == pat)
       
   377         else:
       
   378             m = matchmod.match(ctx._repo.root, '', [pat], ctx=ctx)
       
   379         return [sub for sub in sstate if m(sub)]
       
   380     else:
       
   381         return [sub for sub in sstate]
       
   382 
   361 symbols = {
   383 symbols = {
   362     'added': added,
   384     'added': added,
   363     'binary': binary,
   385     'binary': binary,
   364     'clean': clean,
   386     'clean': clean,
   365     'copied': copied,
   387     'copied': copied,
   374     'resolved': resolved,
   396     'resolved': resolved,
   375     'size': size,
   397     'size': size,
   376     'symlink': symlink,
   398     'symlink': symlink,
   377     'unknown': unknown,
   399     'unknown': unknown,
   378     'unresolved': unresolved,
   400     'unresolved': unresolved,
       
   401     'subrepo': subrepo,
   379 }
   402 }
   380 
   403 
   381 methods = {
   404 methods = {
   382     'string': stringset,
   405     'string': stringset,
   383     'symbol': stringset,
   406     'symbol': stringset,