Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 36446:07e207e88b42
showconfig: use set to filter sections and entry names
Before, an entry matching the specified section could be printed twice if the
selector wasn't unique.
"sections" and "items" are renamed because it's hard to distinguish "sections"
from the loop variable "section".
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 21 Feb 2018 23:02:39 +0900 |
parents | a75cab94e936 |
children | 199443c55463 |
comparison
equal
deleted
inserted
replaced
36445:0cb09c322647 | 36446:07e207e88b42 |
---|---|
1691 for section, name, value, source in f: | 1691 for section, name, value, source in f: |
1692 ui.debug('set config by: %s\n' % source) | 1692 ui.debug('set config by: %s\n' % source) |
1693 else: | 1693 else: |
1694 raise error.ProgrammingError('unknown rctype: %s' % t) | 1694 raise error.ProgrammingError('unknown rctype: %s' % t) |
1695 untrusted = bool(opts.get('untrusted')) | 1695 untrusted = bool(opts.get('untrusted')) |
1696 | |
1697 selsections = selentries = [] | |
1696 if values: | 1698 if values: |
1697 sections = [v for v in values if '.' not in v] | 1699 selsections = [v for v in values if '.' not in v] |
1698 items = [v for v in values if '.' in v] | 1700 selentries = [v for v in values if '.' in v] |
1699 if len(items) > 1 or items and sections: | 1701 if len(selentries) > 1 or selentries and selsections: |
1700 raise error.Abort(_('only one config item permitted')) | 1702 raise error.Abort(_('only one config item permitted')) |
1703 selsections = set(selsections) | |
1704 selentries = set(selentries) | |
1705 | |
1701 matched = False | 1706 matched = False |
1702 for section, name, value in ui.walkconfig(untrusted=untrusted): | 1707 for section, name, value in ui.walkconfig(untrusted=untrusted): |
1703 source = ui.configsource(section, name, untrusted) | 1708 source = ui.configsource(section, name, untrusted) |
1704 value = pycompat.bytestr(value) | 1709 value = pycompat.bytestr(value) |
1705 if fm.isplain(): | 1710 if fm.isplain(): |
1706 source = source or 'none' | 1711 source = source or 'none' |
1707 value = value.replace('\n', '\\n') | 1712 value = value.replace('\n', '\\n') |
1708 entryname = section + '.' + name | 1713 entryname = section + '.' + name |
1709 if values: | 1714 if values: |
1710 for v in values: | 1715 if section in selsections: |
1711 if v == section: | 1716 fm.startitem() |
1712 fm.startitem() | 1717 fm.condwrite(ui.debugflag, 'source', '%s: ', source) |
1713 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | 1718 fm.write('name value', '%s=%s\n', entryname, value) |
1714 fm.write('name value', '%s=%s\n', entryname, value) | 1719 matched = True |
1715 matched = True | 1720 elif entryname in selentries: |
1716 elif v == entryname: | 1721 fm.startitem() |
1717 fm.startitem() | 1722 fm.condwrite(ui.debugflag, 'source', '%s: ', source) |
1718 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | 1723 fm.write('value', '%s\n', value) |
1719 fm.write('value', '%s\n', value) | 1724 fm.data(name=entryname) |
1720 fm.data(name=entryname) | 1725 matched = True |
1721 matched = True | |
1722 else: | 1726 else: |
1723 fm.startitem() | 1727 fm.startitem() |
1724 fm.condwrite(ui.debugflag, 'source', '%s: ', source) | 1728 fm.condwrite(ui.debugflag, 'source', '%s: ', source) |
1725 fm.write('name value', '%s=%s\n', entryname, value) | 1729 fm.write('name value', '%s=%s\n', entryname, value) |
1726 matched = True | 1730 matched = True |