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
--- 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