mercurial/cacheutil.py
author Yuya Nishihara <yuya@tcha.org>
Sat, 15 Dec 2018 19:05:42 +0900
changeset 41003 49d48489a16b
parent 35766 72fdd99eb526
child 43075 57875cf423c9
permissions -rw-r--r--
blackbox: resurrect recursion guard If I added ui.log() to hg.repository() function, test-merge-subrepos.t exploded. The problem is that the blackbox may create new repository instance while logging is active, and the created repository owns its new ui derived from the baseui, not from the ui which is processing the active logging. I tried to work around the issue in ui.log(), but that turned out to be not easy. We shouldn't globally lock the ui.log() since there may be more than one active repo/ui instances in threaded environment. We could store the logging state in thread-local storage, but that seems unnecessarily complex. So this patch reintroduces the _inlog flag to per-repository logger instances.

# scmutil.py - Mercurial core utility functions
#
#  Copyright Matt Mackall <mpm@selenic.com> and other
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import

from . import repoview

def cachetocopy(srcrepo):
    """return the list of cache file valuable to copy during a clone"""
    # In local clones we're copying all nodes, not just served
    # ones. Therefore copy all branch caches over.
    cachefiles = ['branch2']
    cachefiles += ['branch2-%s' % f for f in repoview.filtertable]
    cachefiles += ['rbc-names-v1', 'rbc-revs-v1']
    cachefiles += ['tags2']
    cachefiles += ['tags2-%s' % f for f in repoview.filtertable]
    cachefiles += ['hgtagsfnodes1']
    return cachefiles