Mercurial > public > mercurial-scm > hg
comparison mercurial/fileset.py @ 16443:9e02e032b522
fileset: add "subrepo" fileset symbol
This new fileset symbol returns a list of subrepos whose paths match a given
pattern. If the argument has no pattern type set, an exact
match is performed.
If no argument is passed, return a list of all subrepos.
author | Angel Ezquerra <angel.ezquerra@gmail.com> |
---|---|
date | Thu, 22 Mar 2012 21:12:15 +0100 |
parents | 042e84e39dee |
children | 5d9e2031c0b1 |
comparison
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, |