Show More
@@ -2200,6 +2200,21 def _docommit(ui, repo, *pats, **opts): | |||||
2200 | b'config|showconfig|debugconfig', |
|
2200 | b'config|showconfig|debugconfig', | |
2201 | [ |
|
2201 | [ | |
2202 | (b'u', b'untrusted', None, _(b'show untrusted configuration options')), |
|
2202 | (b'u', b'untrusted', None, _(b'show untrusted configuration options')), | |
|
2203 | # This is experimental because we need | |||
|
2204 | # * reasonable behavior around aliases, | |||
|
2205 | # * decide if we display [debug] [experimental] and [devel] section par | |||
|
2206 | # default | |||
|
2207 | # * some way to display "generic" config entry (the one matching | |||
|
2208 | # regexp, | |||
|
2209 | # * proper display of the different value type | |||
|
2210 | # * a better way to handle <DYNAMIC> values (and variable types), | |||
|
2211 | # * maybe some type information ? | |||
|
2212 | ( | |||
|
2213 | b'', | |||
|
2214 | b'exp-all-known', | |||
|
2215 | None, | |||
|
2216 | _(b'show all known config option (EXPERIMENTAL)'), | |||
|
2217 | ), | |||
2203 | (b'e', b'edit', None, _(b'edit user config')), |
|
2218 | (b'e', b'edit', None, _(b'edit user config')), | |
2204 | (b'l', b'local', None, _(b'edit repository config')), |
|
2219 | (b'l', b'local', None, _(b'edit repository config')), | |
2205 | (b'', b'source', None, _(b'show source of configuration value')), |
|
2220 | (b'', b'source', None, _(b'show source of configuration value')), | |
@@ -2336,8 +2351,10 def config(ui, repo, *values, **opts): | |||||
2336 | selentries = set(selentries) |
|
2351 | selentries = set(selentries) | |
2337 |
|
2352 | |||
2338 | matched = False |
|
2353 | matched = False | |
|
2354 | all_known = opts[b'exp_all_known'] | |||
2339 | show_source = ui.debugflag or opts.get(b'source') |
|
2355 | show_source = ui.debugflag or opts.get(b'source') | |
2340 |
|
|
2356 | entries = ui.walkconfig(untrusted=untrusted, all_known=all_known) | |
|
2357 | for section, name, value in entries: | |||
2341 | source = ui.configsource(section, name, untrusted) |
|
2358 | source = ui.configsource(section, name, untrusted) | |
2342 | value = pycompat.bytestr(value) |
|
2359 | value = pycompat.bytestr(value) | |
2343 | defaultvalue = ui.configdefault(section, name) |
|
2360 | defaultvalue = ui.configdefault(section, name) |
@@ -948,7 +948,48 class ui(object): | |||||
948 | ) |
|
948 | ) | |
949 | return items |
|
949 | return items | |
950 |
|
950 | |||
951 | def walkconfig(self, untrusted=False): |
|
951 | def walkconfig(self, untrusted=False, all_known=False): | |
|
952 | defined = self._walk_config(untrusted) | |||
|
953 | if not all_known: | |||
|
954 | for d in defined: | |||
|
955 | yield d | |||
|
956 | return | |||
|
957 | known = self._walk_known() | |||
|
958 | current_defined = next(defined, None) | |||
|
959 | current_known = next(known, None) | |||
|
960 | while current_defined is not None or current_known is not None: | |||
|
961 | if current_defined is None: | |||
|
962 | yield current_known | |||
|
963 | current_known = next(known, None) | |||
|
964 | elif current_known is None: | |||
|
965 | yield current_defined | |||
|
966 | current_defined = next(defined, None) | |||
|
967 | elif current_known[0:2] == current_defined[0:2]: | |||
|
968 | yield current_defined | |||
|
969 | current_defined = next(defined, None) | |||
|
970 | current_known = next(known, None) | |||
|
971 | elif current_known[0:2] < current_defined[0:2]: | |||
|
972 | yield current_known | |||
|
973 | current_known = next(known, None) | |||
|
974 | else: | |||
|
975 | yield current_defined | |||
|
976 | current_defined = next(defined, None) | |||
|
977 | ||||
|
978 | def _walk_known(self): | |||
|
979 | for section, items in sorted(self._knownconfig.items()): | |||
|
980 | for k, i in sorted(items.items()): | |||
|
981 | # We don't have a way to display generic well, so skip them | |||
|
982 | if i.generic: | |||
|
983 | continue | |||
|
984 | if callable(i.default): | |||
|
985 | default = i.default() | |||
|
986 | elif i.default is configitems.dynamicdefault: | |||
|
987 | default = b'<DYNAMIC>' | |||
|
988 | else: | |||
|
989 | default = i.default | |||
|
990 | yield section, i.name, default | |||
|
991 | ||||
|
992 | def _walk_config(self, untrusted): | |||
952 | cfg = self._data(untrusted) |
|
993 | cfg = self._data(untrusted) | |
953 | for section in cfg.sections(): |
|
994 | for section in cfg.sections(): | |
954 | for name, value in self.configitems(section, untrusted): |
|
995 | for name, value in self.configitems(section, untrusted): |
@@ -262,7 +262,7 Show all commands + options | |||||
262 | cat: output, rev, decode, include, exclude, template |
|
262 | cat: output, rev, decode, include, exclude, template | |
263 | clone: noupdate, updaterev, rev, branch, pull, uncompressed, stream, ssh, remotecmd, insecure |
|
263 | clone: noupdate, updaterev, rev, branch, pull, uncompressed, stream, ssh, remotecmd, insecure | |
264 | commit: addremove, close-branch, amend, secret, edit, force-close-branch, interactive, include, exclude, message, logfile, date, user, subrepos |
|
264 | commit: addremove, close-branch, amend, secret, edit, force-close-branch, interactive, include, exclude, message, logfile, date, user, subrepos | |
265 | config: untrusted, edit, local, source, shared, non-shared, global, template |
|
265 | config: untrusted, exp-all-known, edit, local, source, shared, non-shared, global, template | |
266 | continue: dry-run |
|
266 | continue: dry-run | |
267 | copy: forget, after, at-rev, force, include, exclude, dry-run |
|
267 | copy: forget, after, at-rev, force, include, exclude, dry-run | |
268 | debugancestor: |
|
268 | debugancestor: |
@@ -408,6 +408,32 configs should be read in lexicographica | |||||
408 | $ HGRCPATH=configs hg config section.key |
|
408 | $ HGRCPATH=configs hg config section.key | |
409 | 99 |
|
409 | 99 | |
410 |
|
410 | |||
|
411 | Listing all config options | |||
|
412 | ========================== | |||
|
413 | ||||
|
414 | The feature is experimental and behavior may varies. This test exists to make sure the code is run. We grep it to avoid too much variability in its current experimental state. | |||
|
415 | ||||
|
416 | $ hg config --exp-all-known | grep commit | |||
|
417 | commands.commit.interactive.git=False | |||
|
418 | commands.commit.interactive.ignoreblanklines=False | |||
|
419 | commands.commit.interactive.ignorews=False | |||
|
420 | commands.commit.interactive.ignorewsamount=False | |||
|
421 | commands.commit.interactive.ignorewseol=False | |||
|
422 | commands.commit.interactive.nobinary=False | |||
|
423 | commands.commit.interactive.nodates=False | |||
|
424 | commands.commit.interactive.noprefix=False | |||
|
425 | commands.commit.interactive.showfunc=False | |||
|
426 | commands.commit.interactive.unified=None | |||
|
427 | commands.commit.interactive.word-diff=False | |||
|
428 | commands.commit.post-status=False | |||
|
429 | convert.git.committeractions=[*'messagedifferent'] (glob) | |||
|
430 | convert.svn.dangerous-set-commit-dates=False | |||
|
431 | experimental.copytrace.sourcecommitlimit=100 | |||
|
432 | phases.new-commit=draft | |||
|
433 | ui.allowemptycommit=False | |||
|
434 | ui.commitsubrepos=False | |||
|
435 | ||||
|
436 | ||||
411 | Configuration priority |
|
437 | Configuration priority | |
412 | ====================== |
|
438 | ====================== | |
413 |
|
439 |
General Comments 0
You need to be logged in to leave comments.
Login now