--- /dev/null
+diff -rc mercurial-1.0.orig/mercurial/archival.py mercurial-1.0/mercurial/archival.py
+*** mercurial-1.0.orig/mercurial/archival.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/archival.py 2008-04-13 02:22:47.000000000 +0200
+***************
+*** 64,71 ****
+ self.fileobj.write(fname + '\000')
+
+ def __init__(self, dest, prefix, mtime, kind=''):
+! self.prefix = tidyprefix(dest, prefix, ['.tar', '.tar.bz2', '.tar.gz',
+! '.tgz', '.tbz2'])
+ self.mtime = mtime
+
+ def taropen(name, mode, fileobj=None):
+--- 64,71 ----
+ self.fileobj.write(fname + '\000')
+
+ def __init__(self, dest, prefix, mtime, kind=''):
+! self.prefix = tidyprefix(dest, prefix, ['.tar', '.tar.gz',
+! '.tgz'])
+ self.mtime = mtime
+
+ def taropen(name, mode, fileobj=None):
+***************
+*** 178,184 ****
+ archivers = {
+ 'files': fileit,
+ 'tar': tarit,
+- 'tbz2': lambda name, prefix, mtime: tarit(name, prefix, mtime, 'bz2'),
+ 'tgz': lambda name, prefix, mtime: tarit(name, prefix, mtime, 'gz'),
+ 'uzip': lambda name, prefix, mtime: zipit(name, prefix, mtime, False),
+ 'zip': zipit,
+--- 178,183 ----
+diff -rc mercurial-1.0.orig/mercurial/bundlerepo.py mercurial-1.0/mercurial/bundlerepo.py
+*** mercurial-1.0.orig/mercurial/bundlerepo.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/bundlerepo.py 2008-04-13 02:23:54.000000000 +0200
+***************
+*** 12,18 ****
+
+ from node import hex, nullid, short
+ from i18n import _
+! import changegroup, util, os, struct, bz2, tempfile, shutil, mdiff
+ import repo, localrepo, changelog, manifest, filelog, revlog
+
+ class bundlerevlog(revlog.revlog):
+--- 12,18 ----
+
+ from node import hex, nullid, short
+ from i18n import _
+! import changegroup, util, os, struct, tempfile, shutil, mdiff
+ import repo, localrepo, changelog, manifest, filelog, revlog
+
+ class bundlerevlog(revlog.revlog):
+***************
+*** 173,201 ****
+ raise util.Abort(_("%s: not a Mercurial bundle file") % bundlename)
+ elif not header.startswith("HG10"):
+ raise util.Abort(_("%s: unknown bundle version") % bundlename)
+- elif header == "HG10BZ":
+- fdtemp, temp = tempfile.mkstemp(prefix="hg-bundle-",
+- suffix=".hg10un", dir=self.path)
+- self.tempfile = temp
+- fptemp = os.fdopen(fdtemp, 'wb')
+- def generator(f):
+- zd = bz2.BZ2Decompressor()
+- zd.decompress("BZ")
+- for chunk in f:
+- yield zd.decompress(chunk)
+- gen = generator(util.filechunkiter(self.bundlefile, 4096))
+-
+- try:
+- fptemp.write("HG10UN")
+- for chunk in gen:
+- fptemp.write(chunk)
+- finally:
+- fptemp.close()
+- self.bundlefile.close()
+-
+- self.bundlefile = open(self.tempfile, "rb")
+- # seek right after the header
+- self.bundlefile.seek(6)
+ elif header == "HG10UN":
+ # nothing to do
+ pass
+--- 173,178 ----
+diff -rc mercurial-1.0.orig/mercurial/changegroup.py mercurial-1.0/mercurial/changegroup.py
+*** mercurial-1.0.orig/mercurial/changegroup.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/changegroup.py 2008-04-13 02:24:40.000000000 +0200
+***************
+*** 8,14 ****
+ """
+
+ from i18n import _
+! import struct, os, bz2, zlib, util, tempfile
+
+ def getchunk(source):
+ """get a chunk from a changegroup"""
+--- 8,14 ----
+ """
+
+ from i18n import _
+! import struct, os, zlib, util, tempfile
+
+ def getchunk(source):
+ """get a chunk from a changegroup"""
+***************
+*** 49,60 ****
+ bundletypes = {
+ "": ("", nocompress),
+ "HG10UN": ("HG10UN", nocompress),
+- "HG10BZ": ("HG10", lambda: bz2.BZ2Compressor()),
+ "HG10GZ": ("HG10GZ", lambda: zlib.compressobj()),
+ }
+
+ # hgweb uses this list to communicate it's preferred type
+! bundlepriority = ['HG10GZ', 'HG10BZ', 'HG10UN']
+
+ def writebundle(cg, filename, bundletype):
+ """Write a bundle file and return its filename.
+--- 49,59 ----
+ bundletypes = {
+ "": ("", nocompress),
+ "HG10UN": ("HG10UN", nocompress),
+ "HG10GZ": ("HG10GZ", lambda: zlib.compressobj()),
+ }
+
+ # hgweb uses this list to communicate it's preferred type
+! bundlepriority = ['HG10GZ', 'HG10UN']
+
+ def writebundle(cg, filename, bundletype):
+ """Write a bundle file and return its filename.
+***************
+*** 122,133 ****
+ zd = zlib.decompressobj()
+ for chunk in f:
+ yield zd.decompress(chunk)
+- elif header == 'HG10BZ':
+- def generator(f):
+- zd = bz2.BZ2Decompressor()
+- zd.decompress("BZ")
+- for chunk in util.filechunkiter(f, 4096):
+- yield zd.decompress(chunk)
+ return util.chunkbuffer(generator(fh))
+
+ def readbundle(fh, fname):
+--- 121,126 ----
+diff -rc mercurial-1.0.orig/mercurial/commands.py mercurial-1.0/mercurial/commands.py
+*** mercurial-1.0.orig/mercurial/commands.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/commands.py 2008-04-13 02:24:54.000000000 +0200
+***************
+*** 139,145 ****
+
+ "files" (default): a directory full of files
+ "tar": tar archive, uncompressed
+- "tbz2": tar archive, compressed using bzip2
+ "tgz": tar archive, compressed using gzip
+ "uzip": zip archive, uncompressed
+ "zip": zip archive, compressed using deflate
+--- 139,144 ----
+diff -rc mercurial-1.0.orig/mercurial/hgweb/hgwebdir_mod.py mercurial-1.0/mercurial/hgweb/hgwebdir_mod.py
+*** mercurial-1.0.orig/mercurial/hgweb/hgwebdir_mod.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/hgweb/hgwebdir_mod.py 2008-04-13 02:25:33.000000000 +0200
+***************
+*** 152,158 ****
+
+ def archivelist(ui, nodeid, url):
+ allowed = ui.configlist("web", "allow_archive", untrusted=True)
+! for i in [('zip', '.zip'), ('gz', '.tar.gz'), ('bz2', '.tar.bz2')]:
+ if i[0] in allowed or ui.configbool("web", "allow" + i[0],
+ untrusted=True):
+ yield {"type" : i[0], "extension": i[1],
+--- 152,158 ----
+
+ def archivelist(ui, nodeid, url):
+ allowed = ui.configlist("web", "allow_archive", untrusted=True)
+! for i in [('zip', '.zip'), ('gz', '.tar.gz')]:
+ if i[0] in allowed or ui.configbool("web", "allow" + i[0],
+ untrusted=True):
+ yield {"type" : i[0], "extension": i[1],
+diff -rc mercurial-1.0.orig/mercurial/hgweb/hgweb_mod.py mercurial-1.0/mercurial/hgweb/hgweb_mod.py
+*** mercurial-1.0.orig/mercurial/hgweb/hgweb_mod.py 2008-03-25 00:05:20.000000000 +0100
+--- mercurial-1.0/mercurial/hgweb/hgweb_mod.py 2008-04-13 02:25:49.000000000 +0200
+***************
+*** 91,97 ****
+ hook.redirect(True)
+ self.mtime = -1
+ self.reponame = name
+! self.archives = 'zip', 'gz', 'bz2'
+ self.stripecount = 1
+ self._capabilities = None
+ # a repo owner may set web.templates in .hg/hgrc to get any file
+--- 91,97 ----
+ hook.redirect(True)
+ self.mtime = -1
+ self.reponame = name
+! self.archives = 'zip', 'gz'
+ self.stripecount = 1
+ self._capabilities = None
+ # a repo owner may set web.templates in .hg/hgrc to get any file
+***************
+*** 915,921 ****
+ diff=diff)
+
+ archive_specs = {
+- 'bz2': ('application/x-tar', 'tbz2', '.tar.bz2', None),
+ 'gz': ('application/x-tar', 'tgz', '.tar.gz', None),
+ 'zip': ('application/zip', 'zip', '.zip', None),
+ }
+--- 915,920 ----