diff --git a/remotefilelog/remotefilectx.py b/remotefilelog/remotefilectx.py --- a/remotefilelog/remotefilectx.py +++ b/remotefilelog/remotefilectx.py @@ -9,6 +9,7 @@ from mercurial.i18n import _ from mercurial.node import bin, hex, nullid, nullrev from mercurial import context, util, error, ancestor, phases, extensions +from . import shallowutil propertycache = util.propertycache conduit = None @@ -240,6 +241,16 @@ if self._verifylinknode(revs, linknode): return linknode + commonlogkwargs = { + 'revs': ' '.join([hex(cl.node(rev)) for rev in revs]), + 'fnode': hex(fnode), + 'filepath': path, + 'user': shallowutil.getusername(repo.ui), + 'reponame': shallowutil.getreponame(repo.ui), + } + + repo.ui.log('linkrevfixup', 'adjusting linknode', **commonlogkwargs) + pc = repo._phasecache seenpublic = False iteranc = cl.ancestors(revs, inclusive=inclusive) @@ -296,7 +307,7 @@ # commits if repo.ui.configbool('fastlog', 'enabled'): lnode = self._linknodeviafastlog(repo, path, ancrev, fnode, - cl, mfl) + cl, mfl, commonlogkwargs) if lnode: return lnode seenpublic = True @@ -320,7 +331,8 @@ return linknode - def _linknodeviafastlog(self, repo, path, srcrev, fnode, cl, mfl): + def _linknodeviafastlog(self, repo, path, srcrev, fnode, cl, mfl, + commonlogkwargs): reponame = repo.ui.config('fbconduit', 'reponame') logmsg = '' if self._conduit is None: @@ -351,7 +363,7 @@ logmsg = 'fastlog failed (%s)' % e return None finally: - repo.ui.log('linkrevfixup', logmsg) + repo.ui.log('linkrevfixup', logmsg, **commonlogkwargs) def _verifylinknode(self, revs, linknode): diff --git a/remotefilelog/shallowutil.py b/remotefilelog/shallowutil.py --- a/remotefilelog/shallowutil.py +++ b/remotefilelog/shallowutil.py @@ -477,3 +477,15 @@ def peercapabilities(peer): """return capabilities of a peer""" return trygetattr(peer, ('_capabilities', 'capabilities'))() + +def getusername(ui): + try: + return util.shortuser(ui.username()) + except Exception: + return 'unknown' + +def getreponame(ui): + reponame = ui.config('paths', 'default') + if reponame: + return os.path.basename(reponame) + return "unknown" diff --git a/tests/test-remotefilelog-linknodes.t b/tests/test-remotefilelog-linknodes.t --- a/tests/test-remotefilelog-linknodes.t +++ b/tests/test-remotefilelog-linknodes.t @@ -315,3 +315,41 @@ > EOF $ rm $TESTTMP/bad_conduit.pyc $ hg log -f x > /dev/null + +Test linknode fixup logging + +Setup extension that logs ui.log linkrevfixup output on the stderr + $ cat >> $TESTTMP/uilog.py < from mercurial import extensions + > from mercurial import ui as uimod + > def uisetup(ui): + > extensions.wrapfunction(uimod.ui, 'log', mylog) + > def mylog(orig, self, service, *msg, **opts): + > if service in ['linkrevfixup']: + > kwstr = ", ".join("%s=%s" % (k, v) for k, v in + > sorted(opts.iteritems())) + > msgstr = msg[0] % msg[1:] + > self.warn('%s: %s (%s)\n' % (service, msgstr, kwstr)) + > return orig(self, service, *msg, **opts) + > EOF + $ cat >> $HGRCPATH < [extensions] + > uilog=$TESTTMP/uilog.py + > EOF + +Silencing stdout because we are interested only in ui.log output + $ hg log -f x -T '{node|short} {desc} {phase} {files}\n' > /dev/null + linkrevfixup: adjusting linknode (filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) + linkrevfixup: fastlog succeded (filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) + +Fastlog fails + $ cat > $TESTTMP/bad_conduit.py < def call_conduit(*args, **kwargs): + > raise Exception('error') + > def conduit_config(*args, **kwargs): + > return True + > EOF + $ rm $TESTTMP/bad_conduit.pyc + $ hg log -f x -T '{node|short} {desc} {phase} {files}\n' > /dev/null + linkrevfixup: adjusting linknode (filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test) + linkrevfixup: fastlog failed (error) (filepath=x, fnode=d4a3ed9310e5bd9887e3bf779da5077efab28216, reponame=master, revs=a5957b6bf0bdeb9b96368bddd2838004ad966b7d, user=test)