debugstate: add new --datesort option
authorAdrian Buehlmann <adrian@cadifra.com>
Sat, 26 Mar 2011 10:59:33 +0100
changeset 13767 0f9282dc87f8
parent 13766 627e50e9e316
child 13768 10aea25fb519
debugstate: add new --datesort option sorts the output lines by mtime, then by filename
mercurial/commands.py
tests/test-debugcomplete.t
--- a/mercurial/commands.py	Sat Mar 26 13:05:17 2011 +0100
+++ b/mercurial/commands.py	Sat Mar 26 10:59:33 2011 +0100
@@ -1340,11 +1340,15 @@
     finally:
         wlock.release()
 
-def debugstate(ui, repo, nodates=None):
+def debugstate(ui, repo, nodates=None, datesort=None):
     """show the contents of the current dirstate"""
     timestr = ""
     showdate = not nodates
-    for file_, ent in sorted(repo.dirstate._map.iteritems()):
+    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 showdate:
             if ent[3] == -1:
                 # Pad or slice to locale representation
@@ -4512,7 +4516,8 @@
         (debugsetparents, [], _('REV1 [REV2]')),
     "debugstate":
         (debugstate,
-         [('', 'nodates', None, _('do not display the saved mtime'))],
+         [('', 'nodates', None, _('do not display the saved mtime')),
+          ('', 'datesort', None, _('sort by saved mtime'))],
          _('[OPTION]...')),
     "debugsub":
         (debugsub,
--- a/tests/test-debugcomplete.t	Sat Mar 26 13:05:17 2011 +0100
+++ b/tests/test-debugcomplete.t	Sat Mar 26 10:59:33 2011 +0100
@@ -231,7 +231,7 @@
   debugrename: rev
   debugrevspec: 
   debugsetparents: 
-  debugstate: nodates
+  debugstate: nodates, datesort
   debugsub: rev
   debugwalk: include, exclude
   debugwireargs: three, four, ssh, remotecmd, insecure