webcommands: allow hgweb's archive to recurse into subrepos

Currently when obtaining an archive snapshot of a repository via the
web interface, subrepositories are not taken in the snapshot. I
introduce an option, archivesubrepos, which allows this.
This commit is contained in:
Jordi Gutiérrez Hermoso 2012-10-29 10:53:46 -04:00
parent 167f9d08c6
commit c9424a0caa
2 changed files with 10 additions and 1 deletions

View File

@ -1295,6 +1295,10 @@ The full set of options is:
(DEPRECATED) Whether to allow .zip downloading of repository
revisions. Default is False. This feature creates temporary files.
``archivesubrepos``
Whether to recurse into subrepositories when archiving. Default is
False.
``baseurl``
Base URL to use when publishing URLs in other locations, so
third-party tools like email notification hooks can construct

View File

@ -14,6 +14,7 @@ from common import paritygen, staticfile, get_contact, ErrorResponse
from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
from mercurial import graphmod, patch
from mercurial import help as helpmod
from mercurial import scmutil
from mercurial.i18n import _
# __all__ is populated with the allowed commands. Be sure to add to it if
@ -799,7 +800,11 @@ def archive(web, req, tmpl):
headers.append(('Content-Encoding', encoding))
req.header(headers)
req.respond(HTTP_OK)
archival.archive(web.repo, req, cnode, artype, prefix=name)
ctx = webutil.changectx(web.repo, req)
archival.archive(web.repo, req, cnode, artype, prefix=name,
matchfn=scmutil.match(ctx, []),
subrepos=web.configbool("web", "archivesubrepos"))
return []