changeset 26417:9a466b9f9792 stable 3.5.2

largefiles: restore archiving largefiles with hgweb (issue4859) This regressed in 7699d3212994, when trying to conditionally disable archiving of largefiles. I'm not sure if wrapfunction() is the right way to do this, but it seems to work. The mysterious issue with lfstatus getting out of sync in the proxy and the unfiltered view crops up again here. See the referenced cset for more info.
author Matt Harbison <matt_harbison@yahoo.com>
date Tue, 29 Sep 2015 23:29:44 -0400
parents aca296094a29
children 0afb81bdf374
files hgext/largefiles/overrides.py hgext/largefiles/uisetup.py tests/test-largefiles-wireproto.t
diffstat 3 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py	Thu Oct 01 11:09:36 2015 -0300
+++ b/hgext/largefiles/overrides.py	Tue Sep 29 23:29:44 2015 -0400
@@ -886,9 +886,19 @@
     finally:
         repo.unfiltered().lfstatus = False
 
+def hgwebarchive(orig, web, req, tmpl):
+    web.repo.lfstatus = True
+
+    try:
+        return orig(web, req, tmpl)
+    finally:
+        web.repo.lfstatus = False
+
 def overridearchive(orig, repo, dest, node, kind, decode=True, matchfn=None,
             prefix='', mtime=None, subrepos=None):
-    if not repo.lfstatus:
+    # For some reason setting repo.lfstatus in hgwebarchive only changes the
+    # unfiltered repo's attr, so check that as well.
+    if not repo.lfstatus and not repo.unfiltered().lfstatus:
         return orig(repo, dest, node, kind, decode, matchfn, prefix, mtime,
                     subrepos)
 
--- a/hgext/largefiles/uisetup.py	Thu Oct 01 11:09:36 2015 -0300
+++ b/hgext/largefiles/uisetup.py	Tue Sep 29 23:29:44 2015 -0400
@@ -119,6 +119,8 @@
     extensions.wrapfunction(archival, 'archive', overrides.overridearchive)
     extensions.wrapfunction(subrepo.hgsubrepo, 'archive',
                             overrides.hgsubrepoarchive)
+    extensions.wrapfunction(webcommands, 'archive',
+                            overrides.hgwebarchive)
     extensions.wrapfunction(cmdutil, 'bailifchanged',
                             overrides.overridebailifchanged)
 
--- a/tests/test-largefiles-wireproto.t	Thu Oct 01 11:09:36 2015 -0300
+++ b/tests/test-largefiles-wireproto.t	Tue Sep 29 23:29:44 2015 -0400
@@ -15,6 +15,8 @@
   > minsize=2
   > patterns=glob:**.dat
   > usercache=${USERCACHE}
+  > [web]
+  > allow_archive = zip
   > [hooks]
   > precommit=sh -c "echo \\"Invoking status precommit hook\\"; hg status"
   > EOF
@@ -215,6 +217,17 @@
   adding file changes
   added 1 changesets with 1 changes to 1 files
 
+Archive contains largefiles
+  >>> import urllib2, os
+  >>> u = 'http://localhost:%s/archive/default.zip' % os.environ['HGPORT2']
+  >>> with open('archive.zip', 'w') as f:
+  ...     f.write(urllib2.urlopen(u).read())
+  $ unzip -t archive.zip
+  Archive:  archive.zip
+      testing: empty-default/.hg_archival.txt   OK
+      testing: empty-default/f1         OK
+  No errors detected in compressed data of archive.zip.
+
 test 'verify' with remotestore:
 
   $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90