comparison mercurial/revlogutils/nodemap.py @ 48690:d55c4472bbb6

persistent-nodemap: properly delete all nodemap files on downgrade Previously, we were only deleting the docket file? Differential Revision: https://phab.mercurial-scm.org/D12093
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 27 Jan 2022 17:04:40 +0100
parents 897aa0c4da4a
children de3ac3d2c60b
comparison
equal deleted inserted replaced
48689:fbf7e383e961 48690:d55c4472bbb6
142 notr._postclose[k](None) 142 notr._postclose[k](None)
143 143
144 144
145 def delete_nodemap(tr, repo, revlog): 145 def delete_nodemap(tr, repo, revlog):
146 """Delete nodemap data on disk for a given revlog""" 146 """Delete nodemap data on disk for a given revlog"""
147 if revlog._nodemap_file is None: 147 prefix = revlog.radix
148 msg = "calling persist nodemap on a revlog without the feature enabled" 148 pattern = re.compile(br"(^|/)%s(-[0-9a-f]+\.nd|\.n(\.a)?)$" % prefix)
149 raise error.ProgrammingError(msg) 149 dirpath = revlog.opener.dirname(revlog._indexfile)
150 repo.svfs.tryunlink(revlog._nodemap_file) 150 for f in revlog.opener.listdir(dirpath):
151 if pattern.match(f):
152 repo.svfs.tryunlink(f)
151 153
152 154
153 def persist_nodemap(tr, revlog, pending=False, force=False): 155 def persist_nodemap(tr, revlog, pending=False, force=False):
154 """Write nodemap data on disk for a given revlog""" 156 """Write nodemap data on disk for a given revlog"""
155 if getattr(revlog, 'filteredrevs', ()): 157 if getattr(revlog, 'filteredrevs', ()):