Testing interaction of sparse and narrow when both are enabled on the client side and we do a non-ellipsis clone #testcases tree flat $ . "$TESTDIR/narrow-library.sh" $ cat << EOF >> $HGRCPATH > [extensions] > sparse = > EOF #if tree $ cat << EOF >> $HGRCPATH > [experimental] > treemanifest = 1 > EOF #endif $ hg init master $ cd master $ mkdir inside $ echo 'inside' > inside/f $ hg add inside/f $ hg commit -m 'add inside' $ mkdir widest $ echo 'widest' > widest/f $ hg add widest/f $ hg commit -m 'add widest' $ mkdir outside $ echo 'outside' > outside/f $ hg add outside/f $ hg commit -m 'add outside' $ cd .. narrow clone the inside file $ hg clone --narrow ssh://user@dummy/master narrow --include inside/f requesting all changes adding changesets adding manifests adding file changes added 3 changesets with 1 changes to 1 files new changesets *:* (glob) updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd narrow $ hg tracked I path:inside/f $ hg files 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 fncache generaldelta narrowhg-experimental revlogv1 sparserevlog store treemanifest (tree !) $ hg debugrebuilddirstate ** unknown exception encountered, please report by visiting ** https://mercurial-scm.org/wiki/BugTracker ** Python 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609] ** Mercurial Distributed SCM (version 4.8.1+588-479a5ea51ccc+20181224) ** Extensions loaded: narrow, sparse Traceback (most recent call last): File "/place/vartmp/hgtests.zMelCK/install/bin/hg", line 43, in dispatch.run() File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 99, in run status = dispatch(req) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 225, in dispatch ret = _runcatch(req) or 0 File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 376, in _runcatch return _callcatch(ui, _runcatchfunc) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 384, in _callcatch return scmutil.callcatch(ui, func) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/scmutil.py", line 166, in callcatch return func() File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 367, in _runcatchfunc return _dispatch(req) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 1021, in _dispatch cmdpats, cmdoptions) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 756, in runcommand ret = _runcommand(ui, options, cmd, d) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 1030, in _runcommand return cmdfunc() File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/dispatch.py", line 1018, in d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/util.py", line 1670, in check return func(*args, **kwargs) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/debugcommands.py", line 1998, in debugrebuilddirstate dirstate.rebuild(ctx.node(), ctx.manifest(), changedfiles) File "/place/vartmp/hgtests.zMelCK/install/lib/python/hgext/narrow/narrowdirstate.py", line 60, in rebuild super(narrowdirstate, self).rebuild(parent, allfiles, changedfiles) File "/place/vartmp/hgtests.zMelCK/install/lib/python/mercurial/extensions.py", line 437, in closure return func(*(args + a), **kw) File "/place/vartmp/hgtests.zMelCK/install/lib/python/hgext/sparse.py", line 213, in _rebuild allfiles = allfiles.matches(matcher) AttributeError: 'list' object has no attribute 'matches' [1]