sparse: don't enable on clone if it was a narrow clone
authorPulkit Goyal <pulkit@yandex-team.ru>
Mon, 24 Dec 2018 15:30:39 +0300
changeset 41148 8eaf693b1409
parent 41147 eb172f9c208c
child 41149 76dcf7958c5f
sparse: don't enable on clone if it was a narrow clone When both sparse and narrow extensions are enabled and we do a narrow clone, sparse enables itself because it reads --include flag and thinks that user is trying to do a sparse clone. This patch changes that behavior, and now if both extensions are enabled and user passes `--narrow`, then the includes and excludes won't be considered as part of sparse profile. Differential Revision: https://phab.mercurial-scm.org/D5479
hgext/sparse.py
tests/test-narrow-sparse.t
--- a/hgext/sparse.py	Mon Dec 24 15:01:47 2018 +0300
+++ b/hgext/sparse.py	Mon Dec 24 15:30:39 2018 +0300
@@ -141,6 +141,7 @@
     include_pat = opts.get(r'include')
     exclude_pat = opts.get(r'exclude')
     enableprofile_pat = opts.get(r'enable_profile')
+    narrow_pat = opts.get(r'narrow')
     include = exclude = enableprofile = False
     if include_pat:
         pat = include_pat
@@ -153,7 +154,9 @@
         enableprofile = True
     if sum([include, exclude, enableprofile]) > 1:
         raise error.Abort(_("too many flags specified."))
-    if include or exclude or enableprofile:
+    # if --narrow is passed, it means they are includes and excludes for narrow
+    # clone
+    if not narrow_pat and (include or exclude or enableprofile):
         def clonesparse(orig, self, node, overwrite, *args, **kwargs):
             sparse.updateconfig(self.unfiltered(), pat, {}, include=include,
                                 exclude=exclude, enableprofile=enableprofile,
--- a/tests/test-narrow-sparse.t	Mon Dec 24 15:01:47 2018 +0300
+++ b/tests/test-narrow-sparse.t	Mon Dec 24 15:30:39 2018 +0300
@@ -52,14 +52,12 @@
   $ hg files
   inside/f
 
-XXX: we should not have sparse enabled
-  $ cat .hg/sparse
-  [include]
-  inside/f
+XXX: we should have a flag in `hg debugsparse` to list the sparse profile
+  $ test -f .hg/sparse
+  [1]
 
   $ cat .hg/requires
   dotencode
-  exp-sparse
   fncache
   generaldelta
   narrowhg-experimental