hgweb: use the given revision in the name of the archive
If you ask for an archive in hgweb by tagname the directory in the archive
should include the tagname not the changeset-id.
--- a/mercurial/hgweb/hgweb_mod.py Wed Mar 07 15:26:03 2007 -0300
+++ b/mercurial/hgweb/hgweb_mod.py Thu Mar 08 22:36:12 2007 +0100
@@ -606,9 +606,13 @@
'zip': ('application/zip', 'zip', '.zip', None),
}
- def archive(self, req, cnode, type_):
+ def archive(self, req, id, type_):
reponame = re.sub(r"\W+", "-", os.path.basename(self.reponame))
- name = "%s-%s" % (reponame, short(cnode))
+ cnode = self.repo.lookup(id)
+ arch_version = id
+ if cnode == id:
+ arch_version = short(cnode)
+ name = "%s-%s" % (reponame, arch_version)
mimetype, artype, extension, encoding = self.archive_specs[type_]
headers = [('Content-type', mimetype),
('Content-disposition', 'attachment; filename=%s%s' %
@@ -989,12 +993,11 @@
req.write(z.flush())
def do_archive(self, req):
- changeset = self.repo.lookup(req.form['node'][0])
type_ = req.form['type'][0]
allowed = self.configlist("web", "allow_archive")
if (type_ in self.archives and (type_ in allowed or
self.configbool("web", "allow" + type_, False))):
- self.archive(req, changeset, type_)
+ self.archive(req, req.form['node'][0], type_)
return
req.write(self.t("error"))