diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -329,12 +329,10 @@ self._datafile = datafile self.nodemap_file = None self.postfix = postfix + self.opener = opener if persistentnodemap: - self.nodemap_file = nodemaputil.get_nodemap_file( - opener, self._indexfile - ) - - self.opener = opener + self.nodemap_file = nodemaputil.get_nodemap_file(self) + assert target[0] in ALL_KINDS assert len(target) == 2 self.target = target diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -148,9 +148,7 @@ ) if revlog.nodemap_file is None: if force: - revlog.nodemap_file = get_nodemap_file( - revlog.opener, revlog._indexfile - ) + revlog.nodemap_file = get_nodemap_file(revlog) else: msg = "calling persist nodemap on a revlog without the feature enabled" raise error.ProgrammingError(msg) @@ -653,12 +651,9 @@ return entry -def get_nodemap_file(opener, indexfile): - if indexfile.endswith(b'.a'): - pending_path = indexfile[:-4] + b".n.a" - if opener.exists(pending_path): +def get_nodemap_file(revlog): + if revlog.postfix == b'a': + pending_path = revlog.radix + b".n.a" + if revlog.opener.exists(pending_path): return pending_path - else: - return indexfile[:-4] + b".n" - else: - return indexfile[:-2] + b".n" + return revlog.radix + b".n"