diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -448,14 +448,9 @@ self.datafile = datafile or (indexfile[:-2] + b".d") self.nodemap_file = None if persistentnodemap: - if indexfile.endswith(b'.a'): - pending_path = indexfile[:-4] + b".n.a" - if opener.exists(pending_path): - self.nodemap_file = pending_path - else: - self.nodemap_file = indexfile[:-4] + b".n" - else: - self.nodemap_file = indexfile[:-2] + b".n" + self.nodemap_file = nodemaputil.get_nodemap_file( + opener, self.indexfile + ) self.opener = opener # When True, indexfile is opened with checkambig=True at writing, to diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -634,3 +634,14 @@ if isinstance(entry, dict): return _find_node(entry, node[1:]) 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): + return pending_path + else: + return indexfile[:-4] + b".n" + else: + return indexfile[:-2] + b".n"