Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/debugcommands.py @ 38841:1d1c1645d7b9
debugfileset: backport --show-stage option from debugrevspec
I'll add some static optimizations to fileset.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 21 Jul 2018 14:52:36 +0900 |
parents | e7aa113b14f7 |
children | f0a574dbfae9 |
comparison
equal
deleted
inserted
replaced
38840:7790cd70842a | 38841:1d1c1645d7b9 |
---|---|
886 fm.end() | 886 fm.end() |
887 | 887 |
888 @command('debugfileset', | 888 @command('debugfileset', |
889 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV')), | 889 [('r', 'rev', '', _('apply the filespec on this revision'), _('REV')), |
890 ('', 'all-files', False, | 890 ('', 'all-files', False, |
891 _('test files from all revisions and working directory'))], | 891 _('test files from all revisions and working directory')), |
892 _('[-r REV] [--all-files] FILESPEC')) | 892 ('p', 'show-stage', [], |
893 _('print parsed tree at the given stage'), _('NAME'))], | |
894 _('[-r REV] [--all-files] [OPTION]... FILESPEC')) | |
893 def debugfileset(ui, repo, expr, **opts): | 895 def debugfileset(ui, repo, expr, **opts): |
894 '''parse and apply a fileset specification''' | 896 '''parse and apply a fileset specification''' |
895 opts = pycompat.byteskwargs(opts) | 897 opts = pycompat.byteskwargs(opts) |
896 ctx = scmutil.revsingle(repo, opts.get('rev'), None) | 898 ctx = scmutil.revsingle(repo, opts.get('rev'), None) |
897 if ui.verbose: | 899 |
898 tree = fileset.parse(expr) | 900 stages = [ |
899 ui.note(fileset.prettyformat(tree), "\n") | 901 ('parsed', pycompat.identity), |
902 ] | |
903 stagenames = set(n for n, f in stages) | |
904 | |
905 showalways = set() | |
906 if ui.verbose and not opts['show_stage']: | |
907 # show parsed tree by --verbose (deprecated) | |
908 showalways.add('parsed') | |
909 if opts['show_stage'] == ['all']: | |
910 showalways.update(stagenames) | |
911 else: | |
912 for n in opts['show_stage']: | |
913 if n not in stagenames: | |
914 raise error.Abort(_('invalid stage name: %s') % n) | |
915 showalways.update(opts['show_stage']) | |
916 | |
917 tree = fileset.parse(expr) | |
918 for n, f in stages: | |
919 tree = f(tree) | |
920 if n in showalways: | |
921 if opts['show_stage'] or n != 'parsed': | |
922 ui.write(("* %s:\n") % n) | |
923 ui.write(fileset.prettyformat(tree), "\n") | |
900 | 924 |
901 files = set() | 925 files = set() |
902 if opts['all_files']: | 926 if opts['all_files']: |
903 for r in repo: | 927 for r in repo: |
904 c = repo[r] | 928 c = repo[r] |