##// END OF EJS Templates
fileset: move buildstatus() to matchctx method...
Yuya Nishihara -
r38914:0f56d08e default
parent child Browse files
Show More
@@ -386,7 +386,8 b' def revs(mctx, x):'
386 matchers = []
386 matchers = []
387 for r in revs:
387 for r in revs:
388 ctx = repo[r]
388 ctx = repo[r]
389 mc = mctx.switch(ctx.p1(), ctx, _buildstatus(ctx.p1(), ctx, x))
389 mc = mctx.switch(ctx.p1(), ctx)
390 mc.buildstatus(x)
390 matchers.append(getmatch(mc, x))
391 matchers.append(getmatch(mc, x))
391 if not matchers:
392 if not matchers:
392 return mctx.never()
393 return mctx.never()
@@ -414,7 +415,8 b' def status(mctx, x):'
414 if not revspec:
415 if not revspec:
415 raise error.ParseError(reverr)
416 raise error.ParseError(reverr)
416 basectx, ctx = scmutil.revpair(repo, [baserevspec, revspec])
417 basectx, ctx = scmutil.revpair(repo, [baserevspec, revspec])
417 mc = mctx.switch(basectx, ctx, _buildstatus(basectx, ctx, x))
418 mc = mctx.switch(basectx, ctx)
419 mc.buildstatus(x)
418 return getmatch(mc, x)
420 return getmatch(mc, x)
419
421
420 @predicate('subrepo([pattern])')
422 @predicate('subrepo([pattern])')
@@ -454,11 +456,21 b' methods = {'
454 }
456 }
455
457
456 class matchctx(object):
458 class matchctx(object):
457 def __init__(self, basectx, ctx, status=None, badfn=None):
459 def __init__(self, basectx, ctx, badfn=None):
458 self._basectx = basectx
460 self._basectx = basectx
459 self.ctx = ctx
461 self.ctx = ctx
460 self._status = status
461 self._badfn = badfn
462 self._badfn = badfn
463 self._status = None
464
465 def buildstatus(self, tree):
466 if not _intree(_statuscallers, tree):
467 return
468 unknown = _intree(['unknown'], tree)
469 ignored = _intree(['ignored'], tree)
470 self._status = self._basectx.status(self.ctx,
471 listignored=ignored,
472 listclean=True,
473 listunknown=unknown)
462
474
463 def status(self):
475 def status(self):
464 return self._status
476 return self._status
@@ -514,8 +526,8 b' class matchctx(object):'
514 return matchmod.nevermatcher(repo.root, repo.getcwd(),
526 return matchmod.nevermatcher(repo.root, repo.getcwd(),
515 badfn=self._badfn)
527 badfn=self._badfn)
516
528
517 def switch(self, basectx, ctx, status=None):
529 def switch(self, basectx, ctx):
518 return matchctx(basectx, ctx, status, self._badfn)
530 return matchctx(basectx, ctx, self._badfn)
519
531
520 # filesets using matchctx.switch()
532 # filesets using matchctx.switch()
521 _switchcallers = [
533 _switchcallers = [
@@ -541,21 +553,10 b' def match(ctx, expr, badfn=None):'
541 tree = filesetlang.parse(expr)
553 tree = filesetlang.parse(expr)
542 tree = filesetlang.analyze(tree)
554 tree = filesetlang.analyze(tree)
543 tree = filesetlang.optimize(tree)
555 tree = filesetlang.optimize(tree)
544 mctx = matchctx(ctx.p1(), ctx, _buildstatus(ctx.p1(), ctx, tree),
556 mctx = matchctx(ctx.p1(), ctx, badfn=badfn)
545 badfn=badfn)
557 mctx.buildstatus(tree)
546 return getmatch(mctx, tree)
558 return getmatch(mctx, tree)
547
559
548 def _buildstatus(basectx, ctx, tree):
549 # do we need status info?
550
551 if _intree(_statuscallers, tree):
552 unknown = _intree(['unknown'], tree)
553 ignored = _intree(['ignored'], tree)
554
555 return basectx.status(ctx, listunknown=unknown, listignored=ignored,
556 listclean=True)
557 else:
558 return None
559
560
560 def loadpredicate(ui, extname, registrarobj):
561 def loadpredicate(ui, extname, registrarobj):
561 """Load fileset predicates from specified registrarobj
562 """Load fileset predicates from specified registrarobj
General Comments 0
You need to be logged in to leave comments. Login now