mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
f260c80298
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
67 lines
1.9 KiB
Python
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)
|