--- a/mercurial/debugcommands.py Thu Feb 02 10:04:02 2017 +0100
+++ b/mercurial/debugcommands.py Thu Feb 02 10:04:34 2017 +0100
@@ -585,6 +585,37 @@
fm.end()
+@command('debugdirstate|debugstate',
+ [('', 'nodates', None, _('do not display the saved mtime')),
+ ('', 'datesort', None, _('sort by saved mtime'))],
+ _('[OPTION]...'))
+def debugstate(ui, repo, **opts):
+ """show the contents of the current dirstate"""
+
+ nodates = opts.get('nodates')
+ datesort = opts.get('datesort')
+
+ timestr = ""
+ if datesort:
+ keyfunc = lambda x: (x[1][3], x[0]) # sort by mtime, then by filename
+ else:
+ keyfunc = None # sort by filename
+ for file_, ent in sorted(repo.dirstate._map.iteritems(), key=keyfunc):
+ if ent[3] == -1:
+ timestr = 'unset '
+ elif nodates:
+ timestr = 'set '
+ else:
+ timestr = time.strftime("%Y-%m-%d %H:%M:%S ",
+ time.localtime(ent[3]))
+ if ent[1] & 0o20000:
+ mode = 'lnk'
+ else:
+ mode = '%3o' % (ent[1] & 0o777 & ~util.umask)
+ ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_))
+ for f in repo.dirstate.copies():
+ ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
+
@command('debugdiscovery',
[('', 'old', None, _('use old-style discovery')),
('', 'nonheads', None,