+def status(files = None, modified = False, new = False, deleted = False,
+ conflict = False, unknown = False, noexclude = False,
+ diff_flags = []):
+ """Show the tree status
+ """
+ cache_files = git.tree_status(files,
+ unknown = (files == None),
+ noexclude = noexclude,
+ diff_flags = diff_flags)
+ filtered = (modified or new or deleted or conflict or unknown)
+
+ if filtered:
+ filestat = []
+ if modified:
+ filestat.append('M')
+ if new:
+ filestat.append('A')
+ filestat.append('N')
+ if deleted:
+ filestat.append('D')
+ if conflict:
+ filestat.append('C')
+ if unknown:
+ filestat.append('?')
+ cache_files = [x for x in cache_files if x[0] in filestat]
+
+ for fs in cache_files:
+ assert files == None or fs[1] in files
+ if not filtered:
+ out.stdout('%s %s' % (fs[0], fs[1]))
+ else:
+ out.stdout('%s' % fs[1])
+