diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -886,9 +886,19 @@ def overridearchivecmd(orig, ui, repo, d 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) diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py --- a/hgext/largefiles/uisetup.py +++ b/hgext/largefiles/uisetup.py @@ -119,6 +119,8 @@ def uisetup(ui): 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) diff --git a/tests/test-largefiles-wireproto.t b/tests/test-largefiles-wireproto.t --- a/tests/test-largefiles-wireproto.t +++ b/tests/test-largefiles-wireproto.t @@ -15,6 +15,8 @@ of largefiles. > 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 @@ Clone over http, no largefiles pulled on 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