changeset 17933:8243dd66e0e3

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.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 29 Oct 2012 10:53:46 -0400
parents c8ffde272653
children 736f1c09f321
files mercurial/help/config.txt mercurial/hgweb/webcommands.py
diffstat 2 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 []