This patch tries to fix one of the issues mentioned in issue6014.
This adds a new defaultvalue template keyword to be used with
hg showconfig to get the default value of the config item.
Details
- Reviewers
- None
- Group Reviewers
hg-reviewers - Commits
- rHG51a2e3102db2: config: add defaultvalue template keyword
Diff Detail
- Repository
- rHG Mercurial
- Lint
Automatic diff as part of commit; lint not applicable. - Unit
Automatic diff as part of commit; unit tests not applicable.
Event Timeline
I like the feature, I'll go ahead and queue it with the str/bytestr thing fixed in flight. Thanks!
mercurial/commands.py | ||
---|---|---|
1875 | you almost certainly want pycompat.bytestr() here and not str() for py3 compat reasons |
+ def configdefault(self, section, name):
+ """returns the default value of the config item"""
+ item = self._knownconfig.get(section, {}).get(name)
+ itemdefault = None
+ if item is not None:
+ if callable(item.default):
+ itemdefault = item.default()
+ else:
+ itemdefault = item.default
+ return itemdefault
Need to handle configitems.dynamicdefault.
diff --git a/mercurial/commands.py b/mercurial/commands.py
- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1872,6 +1872,7 @@for section, name, value in ui.walkconfig(untrusted=untrusted): source = ui.configsource(section, name, untrusted) value = pycompat.bytestr(value)+ defaultvalue = pycompat.bytestr(ui.configdefault(section, name))
We'll probably want to keep None as itself. It's useless if an empty
default were mapped to truthy value, "None".
@@ -1881,7 +1882,7 @@
fm.startitem() fm.condwrite(ui.debugflag, 'source', '%s: ', source) if uniquesel:
- fm.data(name=entryname)
+ fm.data(name=entryname, defaultvalue=defaultvalue)
fm.write('value', '%s\n', value) else: fm.write('name value', '%s=%s\n', entryname, value)
Missed fm.data() for the else case. fm.data(defaultvalue=...) can be moved
out of the if block.
hg config -T '{defaultvalue}' shows a bunch of entries like <object object at 0x7fc4295c00f0>, which is clearly not something we want to show the user. Also hg config -T json crashes for a similar reason (mercurial.error.ProgrammingError: cannot encode <object object at 0x7fdd1a6a20f0>).
`hg config -T '{defaultvalue}'` shows a bunch of entries like `<object object at 0x7fc4295c00f0>`, which is clearly not something we want to show the user. Also `hg config -T json` crashes for a similar reason (`mercurial.error.ProgrammingError: cannot encode <object object at 0x7fdd1a6a20f0>`).
Yup. That's mostly because of configitems.dynamicdefault.
Really nice post here getting how to get robux for free hope you guys like it fun here
you almost certainly want pycompat.bytestr() here and not str() for py3 compat reasons