[PATCH 2 of 3 batching] wireproto: make wirepeer look-before-you-leap on batching

Augie Fackler raf at durin42.com
Wed Aug 5 14:29:57 CDT 2015


# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1438798517 14400
#      Wed Aug 05 14:15:17 2015 -0400
# Node ID 88593e1112f0eb4cc4f2b35258cf2b9ad02ac4e0
# Parent  9c49271fe180f287ca3b43e07ca9b593e2f8c2ce
wireproto: make wirepeer look-before-you-leap on batching

This means that users of request batching don't need to worry
themselves with capability checking. Instead, they can just use
batching, and if the remote server doesn't support batching for some
reason the wirepeer code will transparently un-batch the requests.

This will allow for some slight simplification in a handful of
places. Prior to this change, largefiles would have been silently
broken against a server which did not support batching.

diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
--- a/mercurial/wireproto.py
+++ b/mercurial/wireproto.py
@@ -149,7 +149,10 @@ gboptsmap = {'heads':  'nodes',
 class wirepeer(peer.peerrepository):
 
     def batch(self):
-        return remotebatch(self)
+        if self.capable('batch'):
+            return remotebatch(self)
+        else:
+            return peer.localbatch(self)
     def _submitbatch(self, req):
         cmds = []
         for op, argsdict in req:


More information about the Mercurial-devel mailing list