##// 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 315 return index, nodemap, None
316 316
317 def packentry(self, entry, node, version):
317 def packentry(self, entry, node, version, rev):
318 318 e2 = (getoffset(entry[0]), entry[1], entry[3], entry[4],
319 319 node(entry[5]), node(entry[6]), entry[7])
320 320 return _pack(indexformatv0, *e2)
@@ -388,9 +388,9 b' class revlogio(object):'
388 388
389 389 return index, nodemap, cache
390 390
391 def packentry(self, entry, node, version):
391 def packentry(self, entry, node, version, rev):
392 392 p = _pack(indexformatng, *entry)
393 if not entry[3] and not getoffset(entry[0]) and entry[5] == nullrev:
393 if rev == 0:
394 394 p = _pack(versionformat, version) + p[4:]
395 395 return p
396 396
@@ -972,7 +972,7 b' class revlog(object):'
972 972 self.version &= ~(REVLOGNGINLINEDATA)
973 973 self._inline = False
974 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 976 fp.write(e)
977 977
978 978 # if we don't call rename, the temp file will never replace the
@@ -1027,7 +1027,7 b' class revlog(object):'
1027 1027 self.index.insert(-1, e)
1028 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 1031 if not self._inline:
1032 1032 transaction.add(self.datafile, offset)
1033 1033 transaction.add(self.indexfile, curr * len(entry))
@@ -1179,7 +1179,7 b' class revlog(object):'
1179 1179 link, self.rev(p1), self.rev(p2), node)
1180 1180 self.index.insert(-1, e)
1181 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 1183 if self._inline:
1184 1184 ifh.write(entry)
1185 1185 ifh.write(cdelta)
General Comments 0
You need to be logged in to leave comments. Login now