Mercurial > public > mercurial-scm > hg
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', ()): |