mercurial/dirstate.py
changeset 2022 a59da8cc35e4
parent 2008 11ffa1267185
child 2042 a514c7509fa9
child 2061 5987c1eac2ce
equal deleted inserted replaced
2021:fc22ed56afe3 2022:a59da8cc35e4
   292             self.ui.warn(_('%s: unsupported file type (type is %s)\n') % (
   292             self.ui.warn(_('%s: unsupported file type (type is %s)\n') % (
   293                 util.pathto(self.getcwd(), f),
   293                 util.pathto(self.getcwd(), f),
   294                 kind))
   294                 kind))
   295         return False
   295         return False
   296 
   296 
   297     def statwalk(self, files=None, match=util.always, dc=None):
   297     def statwalk(self, files=None, match=util.always, dc=None, ignored=False):
   298         self.lazyread()
   298         self.lazyread()
   299 
   299 
   300         # walk all files by default
   300         # walk all files by default
   301         if not files:
   301         if not files:
   302             files = [self.root]
   302             files = [self.root]
   305         elif not dc:
   305         elif not dc:
   306             dc = self.filterfiles(files)
   306             dc = self.filterfiles(files)
   307 
   307 
   308         def statmatch(file_, stat):
   308         def statmatch(file_, stat):
   309             file_ = util.pconvert(file_)
   309             file_ = util.pconvert(file_)
   310             if file_ not in dc and self.ignore(file_):
   310             if not ignored and file_ not in dc and self.ignore(file_):
   311                 return False
   311                 return False
   312             return match(file_)
   312             return match(file_)
   313 
   313 
   314         return self.walkhelper(files=files, statmatch=statmatch, dc=dc)
   314         return self.walkhelper(files=files, statmatch=statmatch, dc=dc)
   315 
   315 
   407         ks.sort()
   407         ks.sort()
   408         for k in ks:
   408         for k in ks:
   409             if not seen(k) and (statmatch(k, None)):
   409             if not seen(k) and (statmatch(k, None)):
   410                 yield 'm', k, None
   410                 yield 'm', k, None
   411 
   411 
   412     def changes(self, files=None, match=util.always):
   412     def changes(self, files=None, match=util.always, show_ignored=None):
   413         lookup, modified, added, unknown = [], [], [], []
   413         lookup, modified, added, unknown, ignored = [], [], [], [], []
   414         removed, deleted = [], []
   414         removed, deleted = [], []
   415 
   415 
   416         for src, fn, st in self.statwalk(files, match):
   416         for src, fn, st in self.statwalk(files, match, ignored=show_ignored):
   417             try:
   417             try:
   418                 type_, mode, size, time = self[fn]
   418                 type_, mode, size, time = self[fn]
   419             except KeyError:
   419             except KeyError:
   420                 unknown.append(fn)
   420                 if show_ignored and self.ignore(fn):
       
   421                     ignored.append(fn)
       
   422                 else:
       
   423                     unknown.append(fn)
   421                 continue
   424                 continue
   422             if src == 'm':
   425             if src == 'm':
   423                 nonexistent = True
   426                 nonexistent = True
   424                 if not st:
   427                 if not st:
   425                     try:
   428                     try:
   451             elif type_ == 'a':
   454             elif type_ == 'a':
   452                 added.append(fn)
   455                 added.append(fn)
   453             elif type_ == 'r':
   456             elif type_ == 'r':
   454                 removed.append(fn)
   457                 removed.append(fn)
   455 
   458 
   456         return (lookup, modified, added, removed, deleted, unknown)
   459         return (lookup, modified, added, removed, deleted, unknown, ignored)