##// END OF EJS Templates
exchange: support defining narrow file patterns for pull...
Gregory Szorc -
r39589:130e5df3 default
parent child Browse files
Show More
@@ -1313,7 +1313,8 class pulloperation(object):
1313 1313 """
1314 1314
1315 1315 def __init__(self, repo, remote, heads=None, force=False, bookmarks=(),
1316 remotebookmarks=None, streamclonerequested=None):
1316 remotebookmarks=None, streamclonerequested=None,
1317 includepats=None, excludepats=None):
1317 1318 # repo we pull into
1318 1319 self.repo = repo
1319 1320 # repo we pull from
@@ -1343,6 +1344,10 class pulloperation(object):
1343 1344 self.stepsdone = set()
1344 1345 # Whether we attempted a clone from pre-generated bundles.
1345 1346 self.clonebundleattempted = False
1347 # Set of file patterns to include.
1348 self.includepats = includepats
1349 # Set of file patterns to exclude.
1350 self.excludepats = excludepats
1346 1351
1347 1352 @util.propertycache
1348 1353 def pulledsubset(self):
@@ -1447,7 +1452,7 def _fullpullbundle2(repo, pullop):
1447 1452 pullop.rheads = set(pullop.rheads) - pullop.common
1448 1453
1449 1454 def pull(repo, remote, heads=None, force=False, bookmarks=(), opargs=None,
1450 streamclonerequested=None):
1455 streamclonerequested=None, includepats=None, excludepats=None):
1451 1456 """Fetch repository data from a remote.
1452 1457
1453 1458 This is the main function used to retrieve data from a remote repository.
@@ -1465,13 +1470,29 def pull(repo, remote, heads=None, force
1465 1470 of revlogs from the server. This only works when the local repository is
1466 1471 empty. The default value of ``None`` means to respect the server
1467 1472 configuration for preferring stream clones.
1473 ``includepats`` and ``excludepats`` define explicit file patterns to
1474 include and exclude in storage, respectively. If not defined, narrow
1475 patterns from the repo instance are used, if available.
1468 1476
1469 1477 Returns the ``pulloperation`` created for this pull.
1470 1478 """
1471 1479 if opargs is None:
1472 1480 opargs = {}
1481
1482 # We allow the narrow patterns to be passed in explicitly to provide more
1483 # flexibility for API consumers.
1484 if includepats or excludepats:
1485 includepats = includepats or set()
1486 excludepats = excludepats or set()
1487 else:
1488 includepats, excludepats = repo.narrowpats
1489
1490 narrowspec.validatepatterns(includepats)
1491 narrowspec.validatepatterns(excludepats)
1492
1473 1493 pullop = pulloperation(repo, remote, heads, force, bookmarks=bookmarks,
1474 1494 streamclonerequested=streamclonerequested,
1495 includepats=includepats, excludepats=excludepats,
1475 1496 **pycompat.strkwargs(opargs))
1476 1497
1477 1498 peerlocal = pullop.remote.local()
@@ -749,7 +749,9 def clone(ui, peeropts, source, dest=Non
749 749 overrides = {('ui', 'quietbookmarkmove'): True}
750 750 with local.ui.configoverride(overrides, 'clone'):
751 751 exchange.pull(local, srcpeer, revs,
752 streamclonerequested=stream)
752 streamclonerequested=stream,
753 includepats=storeincludepats,
754 excludepats=storeexcludepats)
753 755 elif srcrepo:
754 756 # TODO lift restriction once exchange.push() accepts narrow
755 757 # push.
General Comments 0
You need to be logged in to leave comments. Login now