changeset 41150:b05eb98a6b67

sparse: fix debugrebuilddirsate when narrow extension is enabled dirstate wrapping in narrow extension converts the manifest object to a list. So let's assume we get a list of files in sparse extension. Differential Revision: https://phab.mercurial-scm.org/D5481
author Pulkit Goyal <pulkit@yandex-team.ru>
date Mon, 24 Dec 2018 16:04:52 +0300
parents 76dcf7958c5f
children 7b7e081f8954
files hgext/sparse.py tests/test-narrow-sparse.t
diffstat 2 files changed, 1 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/sparse.py	Mon Dec 24 15:57:54 2018 +0300
+++ b/hgext/sparse.py	Mon Dec 24 16:04:52 2018 +0300
@@ -210,7 +210,7 @@
     def _rebuild(orig, self, parent, allfiles, changedfiles=None):
         matcher = self._sparsematcher
         if not matcher.always():
-            allfiles = allfiles.matches(matcher)
+            allfiles = [f for f in allfiles if matcher(f)]
             if changedfiles:
                 changedfiles = [f for f in changedfiles if matcher(f)]
 
--- a/tests/test-narrow-sparse.t	Mon Dec 24 15:57:54 2018 +0300
+++ b/tests/test-narrow-sparse.t	Mon Dec 24 16:04:52 2018 +0300
@@ -67,43 +67,3 @@
   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 <module>
-      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 <lambda>
-      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]