##// END OF EJS Templates
revlog: fix revlogio.packentry corner case...
Alexis S. L. Carvalho -
r5338:f8768535 default
parent child Browse files
Show More
@@ -0,0 +1,14 b''
1 #!/bin/sh
2
3 hg init repo
4 cd repo
5
6 touch foo
7 hg ci -Am 'add foo'
8
9 hg up -C null
10 # this should be stored as a delta against rev 0
11 echo foo bar baz > foo
12 hg ci -Am 'add foo again'
13
14 hg debugindex .hg/store/data/foo.i
@@ -0,0 +1,6 b''
1 adding foo
2 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 adding foo
4 rev offset length base linkrev nodeid p1 p2
5 0 0 0 0 0 b80de5d13875 000000000000 000000000000
6 1 0 24 0 1 0376abec49b8 000000000000 000000000000
@@ -314,7 +314,7 b' class revlogoldio(object):'
314
314
315 return index, nodemap, None
315 return index, nodemap, None
316
316
317 def packentry(self, entry, node, version):
317 def packentry(self, entry, node, version, rev):
318 e2 = (getoffset(entry[0]), entry[1], entry[3], entry[4],
318 e2 = (getoffset(entry[0]), entry[1], entry[3], entry[4],
319 node(entry[5]), node(entry[6]), entry[7])
319 node(entry[5]), node(entry[6]), entry[7])
320 return _pack(indexformatv0, *e2)
320 return _pack(indexformatv0, *e2)
@@ -388,9 +388,9 b' class revlogio(object):'
388
388
389 return index, nodemap, cache
389 return index, nodemap, cache
390
390
391 def packentry(self, entry, node, version):
391 def packentry(self, entry, node, version, rev):
392 p = _pack(indexformatng, *entry)
392 p = _pack(indexformatng, *entry)
393 if not entry[3] and not getoffset(entry[0]) and entry[5] == nullrev:
393 if rev == 0:
394 p = _pack(versionformat, version) + p[4:]
394 p = _pack(versionformat, version) + p[4:]
395 return p
395 return p
396
396
@@ -972,7 +972,7 b' class revlog(object):'
972 self.version &= ~(REVLOGNGINLINEDATA)
972 self.version &= ~(REVLOGNGINLINEDATA)
973 self._inline = False
973 self._inline = False
974 for i in xrange(self.count()):
974 for i in xrange(self.count()):
975 e = self._io.packentry(self.index[i], self.node, self.version)
975 e = self._io.packentry(self.index[i], self.node, self.version, i)
976 fp.write(e)
976 fp.write(e)
977
977
978 # if we don't call rename, the temp file will never replace the
978 # if we don't call rename, the temp file will never replace the
@@ -1027,7 +1027,7 b' class revlog(object):'
1027 self.index.insert(-1, e)
1027 self.index.insert(-1, e)
1028 self.nodemap[node] = curr
1028 self.nodemap[node] = curr
1029
1029
1030 entry = self._io.packentry(e, self.node, self.version)
1030 entry = self._io.packentry(e, self.node, self.version, curr)
1031 if not self._inline:
1031 if not self._inline:
1032 transaction.add(self.datafile, offset)
1032 transaction.add(self.datafile, offset)
1033 transaction.add(self.indexfile, curr * len(entry))
1033 transaction.add(self.indexfile, curr * len(entry))
@@ -1179,7 +1179,7 b' class revlog(object):'
1179 link, self.rev(p1), self.rev(p2), node)
1179 link, self.rev(p1), self.rev(p2), node)
1180 self.index.insert(-1, e)
1180 self.index.insert(-1, e)
1181 self.nodemap[node] = r
1181 self.nodemap[node] = r
1182 entry = self._io.packentry(e, self.node, self.version)
1182 entry = self._io.packentry(e, self.node, self.version, r)
1183 if self._inline:
1183 if self._inline:
1184 ifh.write(entry)
1184 ifh.write(entry)
1185 ifh.write(cdelta)
1185 ifh.write(cdelta)
General Comments 0
You need to be logged in to leave comments. Login now