Show More
@@ -888,15 +888,39 b' def debugextensions(ui, repo, **opts):' | |||
|
888 | 888 | @command('debugfileset', |
|
889 | 889 | [('r', 'rev', '', _('apply the filespec on this revision'), _('REV')), |
|
890 | 890 | ('', 'all-files', False, |
|
891 |
_('test files from all revisions and working directory')) |
|
|
892 | _('[-r REV] [--all-files] FILESPEC')) | |
|
891 | _('test files from all revisions and working directory')), | |
|
892 | ('p', 'show-stage', [], | |
|
893 | _('print parsed tree at the given stage'), _('NAME'))], | |
|
894 | _('[-r REV] [--all-files] [OPTION]... FILESPEC')) | |
|
893 | 895 | def debugfileset(ui, repo, expr, **opts): |
|
894 | 896 | '''parse and apply a fileset specification''' |
|
895 | 897 | opts = pycompat.byteskwargs(opts) |
|
896 | 898 | ctx = scmutil.revsingle(repo, opts.get('rev'), None) |
|
897 | if ui.verbose: | |
|
898 | tree = fileset.parse(expr) | |
|
899 | ui.note(fileset.prettyformat(tree), "\n") | |
|
899 | ||
|
900 | stages = [ | |
|
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 | 925 | files = set() |
|
902 | 926 | if opts['all_files']: |
@@ -274,7 +274,7 b' Show all commands + options' | |||
|
274 | 274 | debugdiscovery: old, nonheads, rev, ssh, remotecmd, insecure |
|
275 | 275 | debugdownload: output |
|
276 | 276 | debugextensions: template |
|
277 | debugfileset: rev, all-files | |
|
277 | debugfileset: rev, all-files, show-stage | |
|
278 | 278 | debugformat: template |
|
279 | 279 | debugfsinfo: |
|
280 | 280 | debuggetbundle: head, common, type |
@@ -114,6 +114,44 b' Test invalid syntax' | |||
|
114 | 114 | hg: parse error: invalid pattern kind: foo |
|
115 | 115 | [255] |
|
116 | 116 | |
|
117 | Show parsed tree at stages: | |
|
118 | ||
|
119 | $ fileset -p unknown a | |
|
120 | abort: invalid stage name: unknown | |
|
121 | [255] | |
|
122 | ||
|
123 | $ fileset -p parsed 'path:a1 or glob:b?' | |
|
124 | * parsed: | |
|
125 | (or | |
|
126 | (kindpat | |
|
127 | (symbol 'path') | |
|
128 | (symbol 'a1')) | |
|
129 | (kindpat | |
|
130 | (symbol 'glob') | |
|
131 | (symbol 'b?'))) | |
|
132 | a1 | |
|
133 | b1 | |
|
134 | b2 | |
|
135 | ||
|
136 | $ fileset -p all 'a1 or a2 or (grep("b") & clean())' | |
|
137 | * parsed: | |
|
138 | (or | |
|
139 | (or | |
|
140 | (symbol 'a1') | |
|
141 | (symbol 'a2')) | |
|
142 | (group | |
|
143 | (and | |
|
144 | (func | |
|
145 | (symbol 'grep') | |
|
146 | (string 'b')) | |
|
147 | (func | |
|
148 | (symbol 'clean') | |
|
149 | None)))) | |
|
150 | a1 | |
|
151 | a2 | |
|
152 | b1 | |
|
153 | b2 | |
|
154 | ||
|
117 | 155 | Test files status |
|
118 | 156 | |
|
119 | 157 | $ rm a1 |
General Comments 0
You need to be logged in to leave comments.
Login now