@@ -649,7 +649,7 @@
def get_nodemap_file(revlog):
- if revlog.postfix == b'a':
+ if revlog._trypending:
pending_path = revlog.radix + b".n.a"
if revlog.opener.exists(pending_path):
return pending_path
@@ -293,13 +293,14 @@
opener,
target,
radix,
- postfix=None,
+ postfix=None, # only exist for `tmpcensored` now
checkambig=False,
mmaplargeindex=False,
censorable=False,
upperboundcomp=None,
persistentnodemap=False,
concurrencychecker=None,
+ trypending=False,
):
"""
create a revlog object
@@ -323,6 +324,7 @@
self._datafile = None
self._nodemap_file = None
self.postfix = postfix
+ self._trypending = trypending
self.opener = opener
if persistentnodemap:
self._nodemap_file = nodemaputil.get_nodemap_file(self)
@@ -484,10 +486,12 @@
new_header, mmapindexthreshold, force_nodemap = self._init_opts()
- if self.postfix is None:
+ if self.postfix is not None:
+ entry_point = b'%s.i.%s' % (self.radix, self.postfix)
+ elif self._trypending and self.opener.exists(b'%s.i.a' % self.radix):
+ entry_point = b'%s.i.a' % self.radix
+ else:
entry_point = b'%s.i' % self.radix
- else:
- entry_point = b'%s.i.%s' % (self.radix, self.postfix)
entry_data = b''
self._initempty = True
@@ -545,7 +549,7 @@
# main docket, so disable it for now.
self._nodemap_file = None
- if self.postfix is None or self.postfix == b'a':
+ if self.postfix is None:
self._datafile = b'%s.d' % self.radix
else:
self._datafile = b'%s.d.%s' % (self.radix, self.postfix)
@@ -2067,6 +2071,10 @@
@contextlib.contextmanager
def _writing(self, transaction):
+ if self._trypending:
+ msg = b'try to write in a `trypending` revlog: %s'
+ msg %= self.display_id
+ raise error.ProgrammingError(msg)
if self._writinghandles is not None:
yield
else:
@@ -396,21 +396,16 @@
the documentation there.
"""
- if trypending and opener.exists(b'00changelog.i.a'):
- postfix = b'a'
- else:
- postfix = None
-
revlog.revlog.__init__(
self,
opener,
target=(revlog_constants.KIND_CHANGELOG, None),
radix=b'00changelog',
- postfix=postfix,
checkambig=True,
mmaplargeindex=True,
persistentnodemap=opener.options.get(b'persistent-nodemap', False),
concurrencychecker=concurrencychecker,
+ trypending=trypending,
)
if self._initempty and (self._format_version == revlog.REVLOGV1):