D5136: exchange: support declaring pull depth

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

D5136: exchange: support declaring pull depth

martinvonz (Martin von Zweigbergk)
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Upcoming commits will teach exchangev2 how to perform a shallow
  clone. This commit teaches hg.clone(), exchange.pull(), and
  exchange.pulloperation to recognize a request for a shallow clone
  by having the caller specify a numeric depth of the maximum number of
  ancestor changesets to fetch.
 
  There are certainly other ways we could control shallow-ness. But this
  one is simple to implement and is also how the narrow extension
  controls things. So it seems to make sense to start here.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/exchange.py
  mercurial/hg.py

CHANGE DETAILS

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -479,7 +479,7 @@
 
 def clone(ui, peeropts, source, dest=None, pull=False, revs=None,
           update=True, stream=False, branch=None, shareopts=None,
-          storeincludepats=None, storeexcludepats=None):
+          storeincludepats=None, storeexcludepats=None, depth=None):
     """Make a copy of an existing repository.
 
     Create a copy of an existing repository in a new directory.  The
@@ -732,7 +732,8 @@
                     exchange.pull(local, srcpeer, revs,
                                   streamclonerequested=stream,
                                   includepats=storeincludepats,
-                                  excludepats=storeexcludepats)
+                                  excludepats=storeexcludepats,
+                                  depth=depth)
             elif srcrepo:
                 # TODO lift restriction once exchange.push() accepts narrow
                 # push.
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1316,7 +1316,7 @@
 
     def __init__(self, repo, remote, heads=None, force=False, bookmarks=(),
                  remotebookmarks=None, streamclonerequested=None,
-                 includepats=None, excludepats=None):
+                 includepats=None, excludepats=None, depth=None):
         # repo we pull into
         self.repo = repo
         # repo we pull from
@@ -1350,6 +1350,8 @@
         self.includepats = includepats
         # Set of file patterns to exclude.
         self.excludepats = excludepats
+        # Number of ancestor changesets to pull from each pulled head.
+        self.depth = depth
 
     @util.propertycache
     def pulledsubset(self):
@@ -1454,7 +1456,8 @@
         pullop.rheads = set(pullop.rheads) - pullop.common
 
 def pull(repo, remote, heads=None, force=False, bookmarks=(), opargs=None,
-         streamclonerequested=None, includepats=None, excludepats=None):
+         streamclonerequested=None, includepats=None, excludepats=None,
+         depth=None):
     """Fetch repository data from a remote.
 
     This is the main function used to retrieve data from a remote repository.
@@ -1475,6 +1478,9 @@
     ``includepats`` and ``excludepats`` define explicit file patterns to
     include and exclude in storage, respectively. If not defined, narrow
     patterns from the repo instance are used, if available.
+    ``depth`` is an integer indicating the DAG depth of history we're
+    interested in. If defined, for each revision specified in ``heads``, we
+    will fetch up to this many of its ancestors and data associated with them.
 
     Returns the ``pulloperation`` created for this pull.
     """
@@ -1495,6 +1501,7 @@
     pullop = pulloperation(repo, remote, heads, force, bookmarks=bookmarks,
                            streamclonerequested=streamclonerequested,
                            includepats=includepats, excludepats=excludepats,
+                           depth=depth,
                            **pycompat.strkwargs(opargs))
 
     peerlocal = pullop.remote.local()



To: indygreg, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Reply | Threaded
Open this post in threaded view
|

D5136: exchange: support declaring pull depth

martinvonz (Martin von Zweigbergk)
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGac59de55c8b4: exchange: support declaring pull depth (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5136?vs=12198&id=12205

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

AFFECTED FILES
  mercurial/exchange.py
  mercurial/hg.py

CHANGE DETAILS

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -479,7 +479,7 @@
 
 def clone(ui, peeropts, source, dest=None, pull=False, revs=None,
           update=True, stream=False, branch=None, shareopts=None,
-          storeincludepats=None, storeexcludepats=None):
+          storeincludepats=None, storeexcludepats=None, depth=None):
     """Make a copy of an existing repository.
 
     Create a copy of an existing repository in a new directory.  The
@@ -749,7 +749,8 @@
                     exchange.pull(local, srcpeer, revs,
                                   streamclonerequested=stream,
                                   includepats=storeincludepats,
-                                  excludepats=storeexcludepats)
+                                  excludepats=storeexcludepats,
+                                  depth=depth)
             elif srcrepo:
                 # TODO lift restriction once exchange.push() accepts narrow
                 # push.
diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1316,7 +1316,7 @@
 
     def __init__(self, repo, remote, heads=None, force=False, bookmarks=(),
                  remotebookmarks=None, streamclonerequested=None,
-                 includepats=None, excludepats=None):
+                 includepats=None, excludepats=None, depth=None):
         # repo we pull into
         self.repo = repo
         # repo we pull from
@@ -1350,6 +1350,8 @@
         self.includepats = includepats
         # Set of file patterns to exclude.
         self.excludepats = excludepats
+        # Number of ancestor changesets to pull from each pulled head.
+        self.depth = depth
 
     @util.propertycache
     def pulledsubset(self):
@@ -1454,7 +1456,8 @@
         pullop.rheads = set(pullop.rheads) - pullop.common
 
 def pull(repo, remote, heads=None, force=False, bookmarks=(), opargs=None,
-         streamclonerequested=None, includepats=None, excludepats=None):
+         streamclonerequested=None, includepats=None, excludepats=None,
+         depth=None):
     """Fetch repository data from a remote.
 
     This is the main function used to retrieve data from a remote repository.
@@ -1475,6 +1478,9 @@
     ``includepats`` and ``excludepats`` define explicit file patterns to
     include and exclude in storage, respectively. If not defined, narrow
     patterns from the repo instance are used, if available.
+    ``depth`` is an integer indicating the DAG depth of history we're
+    interested in. If defined, for each revision specified in ``heads``, we
+    will fetch up to this many of its ancestors and data associated with them.
 
     Returns the ``pulloperation`` created for this pull.
     """
@@ -1495,6 +1501,7 @@
     pullop = pulloperation(repo, remote, heads, force, bookmarks=bookmarks,
                            streamclonerequested=streamclonerequested,
                            includepats=includepats, excludepats=excludepats,
+                           depth=depth,
                            **pycompat.strkwargs(opargs))
 
     peerlocal = pullop.remote.local()



To: indygreg, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel