[PATCH 2 of 3 STABLE] localrepo: grab mixedrepostorecache class from 526750cdd02d
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Mon May 20 05:05:06 EDT 2019
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1558339697 -7200
# Mon May 20 10:08:17 2019 +0200
# Branch stable
# Node ID 9718a6d6c37cd2789361943d9b0ba5d81f97427a
# Parent 6ae29f52d1f01cf5d603fcee713bc08ab4840d3c
# EXP-Topic book-race
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 9718a6d6c37c
localrepo: grab mixedrepostorecache class from 526750cdd02d
On default, Martin von Zweigbergk <martinvonz at google.com> introduced a more
advance filecache decorator. I need this decorator to fix a bug on stable. So I
am grafting the relevant part of 526750cdd02d.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -122,6 +122,25 @@ class storecache(_basefilecache):
def join(self, obj, fname):
return obj.sjoin(fname)
+class mixedrepostorecache(_basefilecache):
+ """filecache for a mix files in .hg/store and outside"""
+ def __init__(self, *pathsandlocations):
+ # scmutil.filecache only uses the path for passing back into our
+ # join(), so we can safely pass a list of paths and locations
+ super(mixedrepostorecache, self).__init__(*pathsandlocations)
+ for path, location in pathsandlocations:
+ _cachedfiles.update(pathsandlocations)
+
+ def join(self, obj, fnameandlocation):
+ fname, location = fnameandlocation
+ if location == '':
+ return obj.vfs.join(fname)
+ else:
+ if location != 'store':
+ raise error.ProgrammingError('unexpected location: %s' %
+ location)
+ return obj.sjoin(fname)
+
def isfilecached(repo, name):
"""check if a repo has already cached "name" filecache-ed property
More information about the Mercurial-devel
mailing list