changeset 16449:874a680a3e23

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.
author Martin Geisler <mg@lazybytes.net>
date Sun, 15 Apr 2012 16:05:57 +0200
parents e6b45e9a75dc
children 9c431cfdca12
files hgext/largefiles/overrides.py hgext/largefiles/uisetup.py tests/test-largefiles.t
diffstat 3 files changed, 31 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py	Sun Apr 15 16:05:53 2012 +0200
+++ b/hgext/largefiles/overrides.py	Sun Apr 15 16:05:57 2012 +0200
@@ -172,6 +172,11 @@
     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
--- a/hgext/largefiles/uisetup.py	Sun Apr 15 16:05:53 2012 +0200
+++ b/hgext/largefiles/uisetup.py	Sun Apr 15 16:05:57 2012 +0200
@@ -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 @@
     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
--- a/tests/test-largefiles.t	Sun Apr 15 16:05:53 2012 +0200
+++ b/tests/test-largefiles.t	Sun Apr 15 16:05:57 2012 +0200
@@ -127,6 +127,29 @@
   $ 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.