mercurial/changelog.py
changeset 7634 14a4337a9b9b
parent 7633 08cabecfa8a8
child 7787 b8d750daadde
equal deleted inserted replaced
7633:08cabecfa8a8 7634:14a4337a9b9b
     4 #
     4 #
     5 # This software may be used and distributed according to the terms
     5 # This software may be used and distributed according to the terms
     6 # of the GNU General Public License, incorporated herein by reference.
     6 # of the GNU General Public License, incorporated herein by reference.
     7 
     7 
     8 from node import bin, hex, nullid
     8 from node import bin, hex, nullid
     9 from revlog import revlog, RevlogError
       
    10 from i18n import _
     9 from i18n import _
    11 import util, error
    10 import util, error, revlog
    12 
    11 
    13 def _string_escape(text):
    12 def _string_escape(text):
    14     """
    13     """
    15     >>> d = {'nl': chr(10), 'bs': chr(92), 'cr': chr(13), 'nul': chr(0)}
    14     >>> d = {'nl': chr(10), 'bs': chr(92), 'cr': chr(13), 'nul': chr(0)}
    16     >>> s = "ab%(nl)scd%(bs)s%(bs)sn%(nul)sab%(cr)scd%(bs)s%(nl)s" % d
    15     >>> s = "ab%(nl)scd%(bs)s%(bs)sn%(nul)sab%(cr)scd%(bs)s%(nl)s" % d
    73 
    72 
    74     def write(self, s):
    73     def write(self, s):
    75         self.data.append(str(s))
    74         self.data.append(str(s))
    76         self.offset += len(s)
    75         self.offset += len(s)
    77 
    76 
    78 class changelog(revlog):
    77 class changelog(revlog.revlog):
    79     def __init__(self, opener):
    78     def __init__(self, opener):
    80         revlog.__init__(self, opener, "00changelog.i")
    79         revlog.revlog.__init__(self, opener, "00changelog.i")
    81 
    80 
    82     def delayupdate(self):
    81     def delayupdate(self):
    83         "delay visibility of index updates to other readers"
    82         "delay visibility of index updates to other readers"
    84         self._realopener = self.opener
    83         self._realopener = self.opener
    85         self.opener = self._delayopener
    84         self.opener = self._delayopener
   117         return appender(fp, self._delaybuf)
   116         return appender(fp, self._delaybuf)
   118 
   117 
   119     def checkinlinesize(self, tr, fp=None):
   118     def checkinlinesize(self, tr, fp=None):
   120         if self.opener == self._delayopener:
   119         if self.opener == self._delayopener:
   121             return
   120             return
   122         return revlog.checkinlinesize(self, tr, fp)
   121         return revlog.revlog.checkinlinesize(self, tr, fp)
   123 
   122 
   124     def decode_extra(self, text):
   123     def decode_extra(self, text):
   125         extra = {}
   124         extra = {}
   126         for l in text.split('\0'):
   125         for l in text.split('\0'):
   127             if l:
   126             if l: