D3178: largefiles: wrap heads command handler more directly

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Sat Apr 7 05:53:43 UTC 2018


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  extensions.wrapfunction() is a more robust method for wrapping a
  function, since it allows multiple wrappers.
  
  While we're here, wrap the function registered with the command instead
  of installing a new command handler.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3178

AFFECTED FILES
  hgext/largefiles/proto.py
  hgext/largefiles/uisetup.py

CHANGE DETAILS

diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py
--- a/hgext/largefiles/uisetup.py
+++ b/hgext/largefiles/uisetup.py
@@ -174,7 +174,7 @@
         wireproto.heads)
 
     # ... and wrap some existing ones
-    wireproto.commands['heads'].func = proto.heads
+    extensions.wrapfunction(wireproto.commands['heads'], 'func', proto.heads)
     # TODO also wrap wireproto.commandsv2 once heads is implemented there.
 
     extensions.wrapfunction(webcommands, 'decodepath', overrides.decodepath)
diff --git a/hgext/largefiles/proto.py b/hgext/largefiles/proto.py
--- a/hgext/largefiles/proto.py
+++ b/hgext/largefiles/proto.py
@@ -168,12 +168,13 @@
     caps.append('largefiles=serve')
     return caps
 
-def heads(repo, proto):
+def heads(orig, repo, proto):
     '''Wrap server command - largefile capable clients will know to call
     lheads instead'''
     if lfutil.islfilesrepo(repo):
         return wireprototypes.ooberror(LARGEFILES_REQUIRED_MSG)
-    return wireproto.heads(repo, proto)
+
+    return orig(repo, proto)
 
 def sshrepocallstream(self, cmd, **args):
     if cmd == 'heads' and self.capable('largefiles'):



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list