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.
--- a/mercurial/help/config.txt Tue Nov 13 19:32:53 2012 -0600
+++ b/mercurial/help/config.txt Mon Oct 29 10:53:46 2012 -0400
@@ -1295,6 +1295,10 @@
(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
--- a/mercurial/hgweb/webcommands.py Tue Nov 13 19:32:53 2012 -0600
+++ b/mercurial/hgweb/webcommands.py Mon Oct 29 10:53:46 2012 -0400
@@ -14,6 +14,7 @@
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 @@
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 []