comparison mercurial/bundlerepo.py @ 6569:c15bfe9cdcd6

add support for HG10GZ bundles to bundlerepo.bundlerevlog()
author Benoit Allard <benoit@aeteurope.nl>
date Thu, 24 Apr 2008 11:48:07 +0200
parents 5c96a4bca66b
children 602f7c1ab954
comparison
equal deleted inserted replaced
6568:0c4c804c8261 6569:c15bfe9cdcd6
10 of the GNU General Public License, incorporated herein by reference. 10 of the GNU General Public License, incorporated herein by reference.
11 """ 11 """
12 12
13 from node import hex, nullid, short 13 from node import hex, nullid, short
14 from i18n import _ 14 from i18n import _
15 import changegroup, util, os, struct, bz2, tempfile, shutil, mdiff 15 import changegroup, util, os, struct, bz2, zlib, tempfile, shutil, mdiff
16 import repo, localrepo, changelog, manifest, filelog, revlog 16 import repo, localrepo, changelog, manifest, filelog, revlog
17 17
18 class bundlerevlog(revlog.revlog): 18 class bundlerevlog(revlog.revlog):
19 def __init__(self, opener, indexfile, bundlefile, 19 def __init__(self, opener, indexfile, bundlefile,
20 linkmapper=None): 20 linkmapper=None):
171 header = self.bundlefile.read(6) 171 header = self.bundlefile.read(6)
172 if not header.startswith("HG"): 172 if not header.startswith("HG"):
173 raise util.Abort(_("%s: not a Mercurial bundle file") % bundlename) 173 raise util.Abort(_("%s: not a Mercurial bundle file") % bundlename)
174 elif not header.startswith("HG10"): 174 elif not header.startswith("HG10"):
175 raise util.Abort(_("%s: unknown bundle version") % bundlename) 175 raise util.Abort(_("%s: unknown bundle version") % bundlename)
176 elif header == "HG10BZ": 176 elif (header == "HG10BZ") or (header == "HG10GZ"):
177 fdtemp, temp = tempfile.mkstemp(prefix="hg-bundle-", 177 fdtemp, temp = tempfile.mkstemp(prefix="hg-bundle-",
178 suffix=".hg10un", dir=self.path) 178 suffix=".hg10un", dir=self.path)
179 self.tempfile = temp 179 self.tempfile = temp
180 fptemp = os.fdopen(fdtemp, 'wb') 180 fptemp = os.fdopen(fdtemp, 'wb')
181 def generator(f): 181 def generator(f):
182 zd = bz2.BZ2Decompressor() 182 if header == "HG10BZ":
183 zd.decompress("BZ") 183 zd = bz2.BZ2Decompressor()
184 zd.decompress("BZ")
185 elif header == "HG10GZ":
186 zd = zlib.decompressobj()
184 for chunk in f: 187 for chunk in f:
185 yield zd.decompress(chunk) 188 yield zd.decompress(chunk)
186 gen = generator(util.filechunkiter(self.bundlefile, 4096)) 189 gen = generator(util.filechunkiter(self.bundlefile, 4096))
187 190
188 try: 191 try: