equal
deleted
inserted
replaced
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: |