diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -48,10 +48,10 @@ class nocompress(object): return "" bundletypes = { - "": nocompress, - "HG10UN": nocompress, - "HG10": lambda: bz2.BZ2Compressor(9), - "HG10GZ": zlib.compressobj, + "": ("", nocompress), + "HG10UN": ("HG10UN", nocompress), + "HG10BZ": ("HG10", lambda: bz2.BZ2Compressor(9)), + "HG10GZ": ("HG10GZ", zlib.compressobj), } def writebundle(cg, filename, type): @@ -75,8 +75,9 @@ def writebundle(cg, filename, type): fh = os.fdopen(fd, "wb") cleanup = filename - fh.write(type) - z = bundletypes[type]() + header, compressor = bundletypes[type] + fh.write(header) + z = compressor() # parse the changegroup data, otherwise we will block # in case of sshrepo because we don't know the end of the stream diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -332,7 +332,7 @@ def bundle(ui, repo, fname, dest=None, * cg = repo.changegroupsubset(o, revs, 'bundle') else: cg = repo.changegroup(o, 'bundle') - changegroup.writebundle(cg, fname, "HG10") + changegroup.writebundle(cg, fname, "HG10BZ") def cat(ui, repo, file1, *pats, **opts): """output the latest or given revisions of files @@ -1324,7 +1324,7 @@ def incoming(ui, repo, source="default", if fname or not other.local(): # create a bundle (uncompressed if other repo is not local) cg = other.changegroup(incoming, "incoming") - type = other.local() and "HG10" or "HG10UN" + type = other.local() and "HG10BZ" or "HG10UN" fname = cleanup = changegroup.writebundle(cg, fname, type) # keep written bundle? if opts["bundle"]: