Protocol breakage
Thomas Arendsen Hein
thomas at intevation.de
Tue May 31 06:01:47 UTC 2005
* Matt Mackall <mpm at selenic.com> [20050530 18:22]:
> I'm afraid I broke the network protocol again. You'll need to grab a
> snapshot to do a sync with mainline again, sorry.
Or use old-http ... I thought ... but:
$ hg merge old-http://selenic.com/hg
requesting changegroup
adding changesets
adding manifests
adding files
Traceback (most recent call last):
File "/home/thomas/bin/hg", line 422, in ?
repo.addchangegroup(cg)
File "/home/thomas/lib/python2.4/site-packages/mercurial/hg.py", line 752, in addchangegroup
f = getchunk(4)
File "/home/thomas/lib/python2.4/site-packages/mercurial/hg.py", line 660, in getchunk
d = source.read(4)
File "/home/thomas/lib/python2.4/site-packages/mercurial/hg.py", line 650, in read
self.buf += self.g.next()
File "/home/thomas/lib/python2.4/site-packages/mercurial/hg.py", line 634, in changegroup
g = self.file(f).group(linkmap)
File "/home/thomas/lib/python2.4/site-packages/mercurial/revlog.py", line 413, in group
d = decompress(chunks[b])
File "/home/thomas/lib/python2.4/site-packages/mercurial/revlog.py", line 33, in decompress
if t == 'x': return zlib.decompress(bin)
zlib.error: Error -5 while decompressing data
transaction abort!
rollback completed
The good news is: Rollback worked fine, no byte was changed.
I'll send you the repository (pulled from you until rev 191) before
trying the merge in a separate email.
Then I tried:
$ hg init
$ hg merge old-http://selenic.com/hg
requesting changegroup
adding changesets
adding manifests
adding files
added 199 changesets, 54 files, and 766 new revisions
(looks fine)
$ hg co
Traceback (most recent call last):
File "/home/thomas/bin/hg", line 138, in ?
repo.checkout(node)
File "/home/thomas/lib/python2.4/site-packages/mercurial/hg.py", line 382, in checkout
t = self.file(f).revision(n)
File "/home/thomas/lib/python2.4/site-packages/mercurial/revlog.py", line 197, in revision
rev = self.rev(node)
File "/home/thomas/lib/python2.4/site-packages/mercurial/revlog.py", line 148, in rev
def rev(self, node): return self.nodemap[node]
KeyError: '\x8a\x8b\x0b\x7f\xb4\xf4\x1c\x98\x13{F\x95\x19\xb1~\xa8&\xd6\x81\xbc'
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
changeset rev 159 not in hgweb.cgi
node 5151d0845a8b9586531bf2e256f0068e9ec39e83 in manifests not in hgweb.cgi
54 files, 199 changesets, 369 total revisions
2 integrity errors encountered!
Oops!
To check if it a merge from a local copy of your repository is
possible, I downloaded it with wget:
$ wget -np -r http://www.selenic.com/hg/{data/,00changelog.d,00changelog.i,00manifest.d,00manifest.i,undo,current}
...
Downloaded: 386,510 bytes in 149 files
$ cd www.selenic.com
$ mv hg .hg
$ hg verify
...
54 files, 199 changesets, 369 total revisions
48 integrity errors encountered!
I thought this should work?
> Note that it now tells you how much was transferred: 113M for the
> whole kernel history. Yes, that's noticeably smaller than the repo
> _and_ the bzipped tarball. That's because it's re-delta-compressing
> the full versions and rezipping everything as a single stream. For
> comparison, the kernel source for 2.6.11 is 35M as a tar.bz2 and 44M
> as a tar.gz.
This sounds great. Small bandwidth usage was one of the main reasons
for me to choose Mercurial.
Thomas
--
Email: thomas at intevation.de
http://intevation.de/~thomas/
More information about the Mercurial
mailing list