diff mercurial/exchange.py @ 40492:440f5b65be57

exchange: pass includepats and excludepats as arguments to getbundle() This will help in implementing narrow stream clones. Also narrow extension used to add these arguments, now we add them by default if they are not empty. Since reading includepats and excludepats on the server only works when narrow is enabled, we check if narrow if enabled or not before passing them. Differential Revision: https://phab.mercurial-scm.org/D5119
author Pulkit Goyal <pulkit@yandex-team.ru>
date Tue, 16 Oct 2018 17:53:26 +0300
parents dd816e5391f6
children 9b8d1ad851f8
line wrap: on
line diff
--- a/mercurial/exchange.py	Thu Nov 01 16:51:21 2018 -0700
+++ b/mercurial/exchange.py	Tue Oct 16 17:53:26 2018 +0300
@@ -40,6 +40,7 @@
     streamclone,
     url as urlmod,
     util,
+    wireprototypes,
 )
 from .utils import (
     stringutil,
@@ -1633,6 +1634,13 @@
     kwargs['common'] = pullop.common
     kwargs['heads'] = pullop.heads or pullop.rheads
 
+    # check server supports narrow and then adding includepats and excludepats
+    servernarrow = pullop.remote.capable(wireprototypes.NARROWCAP)
+    if servernarrow and pullop.includepats:
+        kwargs['includepats'] = pullop.includepats
+    if servernarrow and pullop.excludepats:
+        kwargs['excludepats'] = pullop.excludepats
+
     if streaming:
         kwargs['cg'] = False
         kwargs['stream'] = True