mercurial/debugcommands.py
changeset 50963 98d1117dc904
parent 50962 56a966bc6b1a
child 50964 36f116820853
equal deleted inserted replaced
50962:56a966bc6b1a 50963:98d1117dc904
  3380     representation or the parsed tree respectively.
  3380     representation or the parsed tree respectively.
  3381 
  3381 
  3382     Use --verify-optimized to compare the optimized result with the unoptimized
  3382     Use --verify-optimized to compare the optimized result with the unoptimized
  3383     one. Returns 1 if the optimized result differs.
  3383     one. Returns 1 if the optimized result differs.
  3384     """
  3384     """
  3385     opts = pycompat.byteskwargs(opts)
       
  3386     aliases = ui.configitems(b'revsetalias')
  3385     aliases = ui.configitems(b'revsetalias')
  3387     stages = [
  3386     stages = [
  3388         (b'parsed', lambda tree: tree),
  3387         (b'parsed', lambda tree: tree),
  3389         (
  3388         (
  3390             b'expanded',
  3389             b'expanded',
  3392         ),
  3391         ),
  3393         (b'concatenated', revsetlang.foldconcat),
  3392         (b'concatenated', revsetlang.foldconcat),
  3394         (b'analyzed', revsetlang.analyze),
  3393         (b'analyzed', revsetlang.analyze),
  3395         (b'optimized', revsetlang.optimize),
  3394         (b'optimized', revsetlang.optimize),
  3396     ]
  3395     ]
  3397     if opts[b'no_optimized']:
  3396     if opts['no_optimized']:
  3398         stages = stages[:-1]
  3397         stages = stages[:-1]
  3399     if opts[b'verify_optimized'] and opts[b'no_optimized']:
  3398     if opts['verify_optimized'] and opts['no_optimized']:
  3400         raise error.Abort(
  3399         raise error.Abort(
  3401             _(b'cannot use --verify-optimized with --no-optimized')
  3400             _(b'cannot use --verify-optimized with --no-optimized')
  3402         )
  3401         )
  3403     stagenames = {n for n, f in stages}
  3402     stagenames = {n for n, f in stages}
  3404 
  3403 
  3405     showalways = set()
  3404     showalways = set()
  3406     showchanged = set()
  3405     showchanged = set()
  3407     if ui.verbose and not opts[b'show_stage']:
  3406     if ui.verbose and not opts['show_stage']:
  3408         # show parsed tree by --verbose (deprecated)
  3407         # show parsed tree by --verbose (deprecated)
  3409         showalways.add(b'parsed')
  3408         showalways.add(b'parsed')
  3410         showchanged.update([b'expanded', b'concatenated'])
  3409         showchanged.update([b'expanded', b'concatenated'])
  3411         if opts[b'optimize']:
  3410         if opts['optimize']:
  3412             showalways.add(b'optimized')
  3411             showalways.add(b'optimized')
  3413     if opts[b'show_stage'] and opts[b'optimize']:
  3412     if opts['show_stage'] and opts['optimize']:
  3414         raise error.Abort(_(b'cannot use --optimize with --show-stage'))
  3413         raise error.Abort(_(b'cannot use --optimize with --show-stage'))
  3415     if opts[b'show_stage'] == [b'all']:
  3414     if opts['show_stage'] == [b'all']:
  3416         showalways.update(stagenames)
  3415         showalways.update(stagenames)
  3417     else:
  3416     else:
  3418         for n in opts[b'show_stage']:
  3417         for n in opts['show_stage']:
  3419             if n not in stagenames:
  3418             if n not in stagenames:
  3420                 raise error.Abort(_(b'invalid stage name: %s') % n)
  3419                 raise error.Abort(_(b'invalid stage name: %s') % n)
  3421         showalways.update(opts[b'show_stage'])
  3420         showalways.update(opts['show_stage'])
  3422 
  3421 
  3423     treebystage = {}
  3422     treebystage = {}
  3424     printedtree = None
  3423     printedtree = None
  3425     tree = revsetlang.parse(expr, lookup=revset.lookupfn(repo))
  3424     tree = revsetlang.parse(expr, lookup=revset.lookupfn(repo))
  3426     for n, f in stages:
  3425     for n, f in stages:
  3427         treebystage[n] = tree = f(tree)
  3426         treebystage[n] = tree = f(tree)
  3428         if n in showalways or (n in showchanged and tree != printedtree):
  3427         if n in showalways or (n in showchanged and tree != printedtree):
  3429             if opts[b'show_stage'] or n != b'parsed':
  3428             if opts['show_stage'] or n != b'parsed':
  3430                 ui.write(b"* %s:\n" % n)
  3429                 ui.write(b"* %s:\n" % n)
  3431             ui.write(revsetlang.prettyformat(tree), b"\n")
  3430             ui.write(revsetlang.prettyformat(tree), b"\n")
  3432             printedtree = tree
  3431             printedtree = tree
  3433 
  3432 
  3434     if opts[b'verify_optimized']:
  3433     if opts['verify_optimized']:
  3435         arevs = revset.makematcher(treebystage[b'analyzed'])(repo)
  3434         arevs = revset.makematcher(treebystage[b'analyzed'])(repo)
  3436         brevs = revset.makematcher(treebystage[b'optimized'])(repo)
  3435         brevs = revset.makematcher(treebystage[b'optimized'])(repo)
  3437         if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose):
  3436         if opts['show_set'] or (opts['show_set'] is None and ui.verbose):
  3438             ui.writenoi18n(
  3437             ui.writenoi18n(
  3439                 b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n"
  3438                 b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n"
  3440             )
  3439             )
  3441             ui.writenoi18n(
  3440             ui.writenoi18n(
  3442                 b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n"
  3441                 b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n"
  3460                     ui.write(b' %d\n' % c)
  3459                     ui.write(b' %d\n' % c)
  3461         return 1
  3460         return 1
  3462 
  3461 
  3463     func = revset.makematcher(tree)
  3462     func = revset.makematcher(tree)
  3464     revs = func(repo)
  3463     revs = func(repo)
  3465     if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose):
  3464     if opts['show_set'] or (opts['show_set'] is None and ui.verbose):
  3466         ui.writenoi18n(b"* set:\n", stringutil.prettyrepr(revs), b"\n")
  3465         ui.writenoi18n(b"* set:\n", stringutil.prettyrepr(revs), b"\n")
  3467     if not opts[b'show_revs']:
  3466     if not opts['show_revs']:
  3468         return
  3467         return
  3469     for c in revs:
  3468     for c in revs:
  3470         ui.write(b"%d\n" % c)
  3469         ui.write(b"%d\n" % c)
  3471 
  3470 
  3472 
  3471