sapling/hgext3rd/logginghelper.py
Durham Goode f260c80298 configs: register more of our configs
Upstream has added devel warnings that require us to register all the configs
and remove the defaults that are specified at read time. This doesn't fix all
the cases, but is the start.

Differential Revision: https://phab.mercurial-scm.org/D1206
2017-10-23 20:02:57 -07:00

67 lines
1.9 KiB
Python

# reporootlog.py - log the repo root
#
# Copyright 2016 Facebook, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
"""this extension logs different pieces of information that will be used
by SCM wrappers
::
[logging]
# list of config options to log
configoptions = section1.option1,section2.option2
"""
import os
from mercurial import (
extensions,
localrepo,
registrar,
)
configtable = {}
configitem = registrar.configitem(configtable)
configitem('logging', 'configoptions', default=[])
def _localrepoinit(orig, self, baseui, path=None, create=False):
orig(self, baseui, path, create)
reponame = self.ui.config('paths', 'default')
if reponame:
reponame = os.path.basename(reponame)
configoptstolog = self.ui.configlist('logging', 'configoptions')
kwargs = {'repo': reponame}
# The configs being read here are user defined, so we need to suppress
# warnings telling us to register them.
with self.ui.configoverride({("devel", "all-warnings"): False}):
for option in configoptstolog:
splitted = option.split('.')
if len(splitted) != 2:
continue
section, name = splitted
value = self.ui.config(section, name)
if value is not None:
kwargs[name] = value
obsstore_size = 0
try:
obsstore_size = self.svfs.stat('obsstore').st_size
except Exception:
# just ignore exception, it's better than failing the whole command
pass
kwargs['obsstore_size'] = obsstore_size
self.ui.log("logginghelper",
"", # ui.log requires a format string as args[0].
**kwargs)
def uisetup(ui):
extensions.wrapfunction(localrepo.localrepository,
'__init__', _localrepoinit)