D4852: localrepo: add repository feature when repo can be stream cloned

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Wed Oct 3 16:52:03 UTC 2018


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

REVISION SUMMARY
  Right now, the wire protocol server assumes all repository objects can
  be stream cloned (unless the stream clone feature is disabled via
  config option).
  
  But not all storage backends or repository objects may support stream
  clone.
  
  This commit defines a repository feature denoting whether stream clone
  is supported. The feature is defined for revlog-based repositories,
  which should currently be "all repositories."

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/localrepo.py
  mercurial/repository.py

CHANGE DETAILS

diff --git a/mercurial/repository.py b/mercurial/repository.py
--- a/mercurial/repository.py
+++ b/mercurial/repository.py
@@ -27,6 +27,8 @@
 REPO_FEATURE_SHARED_STORAGE = b'sharedstore'
 # LFS supported for backing file storage.
 REPO_FEATURE_LFS = b'lfs'
+# Repository supports being stream cloned.
+REPO_FEATURE_STREAM_CLONE = b'streamclone'
 
 class ipeerconnection(interfaceutil.Interface):
     """Represents a "connection" to a repository.
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -795,6 +795,7 @@
 def makefilestorage(requirements, features, **kwargs):
     """Produce a type conforming to ``ilocalrepositoryfilestorage``."""
     features.add(repository.REPO_FEATURE_REVLOG_FILE_STORAGE)
+    features.add(repository.REPO_FEATURE_STREAM_CLONE)
 
     if repository.NARROW_REQUIREMENT in requirements:
         return revlognarrowfilestorage



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


More information about the Mercurial-devel mailing list