largefiles: hide .hglf/ prefix for largefiles in hgweb

This makes the manifest view in hgweb match what you see in the
working copy and what you get when you download an archive in hgweb.
This commit is contained in:
Martin Geisler 2012-04-15 16:05:57 +02:00
parent b08f38425c
commit 004ba88f28
3 changed files with 31 additions and 1 deletions

View File

@ -172,6 +172,11 @@ def removelargefiles(ui, repo, *pats, **opts):
finally:
wlock.release()
# For overriding mercurial.hgweb.webcommands so that largefiles will
# appear at their right place in the manifests.
def decodepath(orig, path):
return lfutil.splitstandin(path) or path
# -- Wrappers: modify existing commands --------------------------------
# Add works by going through the files that the user wanted to add and

View File

@ -11,7 +11,7 @@
from mercurial import archival, cmdutil, commands, extensions, filemerge, hg, \
httprepo, localrepo, merge, sshrepo, sshserver, wireproto
from mercurial.i18n import _
from mercurial.hgweb import hgweb_mod, protocol
from mercurial.hgweb import hgweb_mod, protocol, webcommands
import overrides
import proto
@ -109,6 +109,8 @@ def uisetup(ui):
hgweb_mod.perms['getlfile'] = 'pull'
hgweb_mod.perms['statlfile'] = 'pull'
extensions.wrapfunction(webcommands, 'decodepath', overrides.decodepath)
# the hello wireproto command uses wireproto.capabilities, so it won't see
# our largefiles capability unless we replace the actual function as well.
proto.capabilitiesorig = wireproto.capabilities

View File

@ -127,6 +127,29 @@ Test moving largefiles and verify that normal files are also unaffected.
$ cat sub/large4
large22
Test display of largefiles in hgweb
$ hg serve -d -p $HGPORT --pid-file ../hg.pid
$ cat ../hg.pid >> $DAEMON_PIDS
$ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/tip/?style=raw'
200 Script output follows
drwxr-xr-x sub
-rw-r--r-- 41 large3
-rw-r--r-- 9 normal3
$ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/tip/sub/?style=raw'
200 Script output follows
-rw-r--r-- 41 large4
-rw-r--r-- 9 normal4
$ "$TESTDIR/killdaemons.py"
Test archiving the various revisions. These hit corner cases known with
archiving.