mercurial/revlog.py
changeset 50683 a41eeb877d07
parent 50659 12f13b13f414
child 50811 4a3a9d961561
equal deleted inserted replaced
50682:b9a355763e76 50683:a41eeb877d07
   613 
   613 
   614         if self.postfix is not None:
   614         if self.postfix is not None:
   615             entry_point = b'%s.i.%s' % (self.radix, self.postfix)
   615             entry_point = b'%s.i.%s' % (self.radix, self.postfix)
   616         elif self._trypending and self.opener.exists(b'%s.i.a' % self.radix):
   616         elif self._trypending and self.opener.exists(b'%s.i.a' % self.radix):
   617             entry_point = b'%s.i.a' % self.radix
   617             entry_point = b'%s.i.a' % self.radix
   618         elif self._try_split and self.opener.exists(b'%s.i.s' % self.radix):
   618         elif self._try_split and self.opener.exists(self._split_index_file):
   619             entry_point = b'%s.i.s' % self.radix
   619             entry_point = self._split_index_file
   620         else:
   620         else:
   621             entry_point = b'%s.i' % self.radix
   621             entry_point = b'%s.i' % self.radix
   622 
   622 
   623         if docket is not None:
   623         if docket is not None:
   624             self._docket = docket
   624             self._docket = docket
  2123         except error.RevlogError:
  2123         except error.RevlogError:
  2124             if self._censorable and storageutil.iscensoredtext(text):
  2124             if self._censorable and storageutil.iscensoredtext(text):
  2125                 raise error.CensoredNodeError(self.display_id, node, text)
  2125                 raise error.CensoredNodeError(self.display_id, node, text)
  2126             raise
  2126             raise
  2127 
  2127 
       
  2128     @property
       
  2129     def _split_index_file(self):
       
  2130         """the path where to expect the index of an ongoing splitting operation
       
  2131 
       
  2132         The file will only exist if a splitting operation is in progress, but
       
  2133         it is always expected at the same location."""
       
  2134         parts = os.path.split(self.radix)
       
  2135         if len(parts) > 1:
       
  2136             # adds a '-s' prefix to the ``data/` or `meta/` base
       
  2137             head = parts[0] + b'-s'
       
  2138             return os.path.join(head, *parts[1:])
       
  2139         else:
       
  2140             # the revlog is stored at the root of the store (changelog or
       
  2141             # manifest), no risk of collision.
       
  2142             return self.radix + b'.i.s'
       
  2143 
  2128     def _enforceinlinesize(self, tr, side_write=True):
  2144     def _enforceinlinesize(self, tr, side_write=True):
  2129         """Check if the revlog is too big for inline and convert if so.
  2145         """Check if the revlog is too big for inline and convert if so.
  2130 
  2146 
  2131         This should be called after revisions are added to the revlog. If the
  2147         This should be called after revisions are added to the revlog. If the
  2132         revlog has grown too large to be an inline revlog, it will convert it
  2148         revlog has grown too large to be an inline revlog, it will convert it
  2159             # No need to deal with sidedata writing handle as it is only
  2175             # No need to deal with sidedata writing handle as it is only
  2160             # relevant with revlog-v2 which is never inline, not reaching
  2176             # relevant with revlog-v2 which is never inline, not reaching
  2161             # this code
  2177             # this code
  2162         if side_write:
  2178         if side_write:
  2163             old_index_file_path = self._indexfile
  2179             old_index_file_path = self._indexfile
  2164             new_index_file_path = self._indexfile + b'.s'
  2180             new_index_file_path = self._split_index_file
  2165             opener = self.opener
  2181             opener = self.opener
  2166             weak_self = weakref.ref(self)
  2182             weak_self = weakref.ref(self)
  2167 
  2183 
  2168             # the "split" index replace the real index when the transaction is finalized
  2184             # the "split" index replace the real index when the transaction is finalized
  2169             def finalize_callback(tr):
  2185             def finalize_callback(tr):