# HG changeset patch # User Mads Kiilerich # Date 1420825082 -3600 # Node ID ddc17eaf0f1b8eef38e14d5f5f7431ad8a28497d # Parent ff6b5b058fa0672ca0a1980b394255750458e00c debugdirstate: don't hide date field with --nodate, just show 'set'/'unset' The value of the dirstate date field cannot be used in tests and we thus have to use debugdirstate with --nodate. It is however still very helpful to be able to see whether the date field has been set or still is unset. The absence of that information made it hard to debug some largefile dirstate issues. This change _could_ make the test suite more unstable ... but that would be places where the test suite or the code should be made more stable. (Note: 'unset' with the magic negative sizes is reliable. 'unset' for normal sizes would probably not be reliable, but there is no such occurrences in the test suite and it should thus be reliable.) This output wastes more horizontal space in the --nodate output, but it also makes things simpler that the output format always is the same. It is just a debug command so let's keep it simple. diff -r ff6b5b058fa0 -r ddc17eaf0f1b mercurial/commands.py --- a/mercurial/commands.py Fri Jan 09 18:38:02 2015 +0100 +++ b/mercurial/commands.py Fri Jan 09 18:38:02 2015 +0100 @@ -2887,18 +2887,18 @@ def debugstate(ui, repo, nodates=None, datesort=None): """show the contents of the current dirstate""" timestr = "" - showdate = not nodates 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: - timestr = 'unset ' - else: - timestr = time.strftime("%Y-%m-%d %H:%M:%S ", - time.localtime(ent[3])) + 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] & 020000: mode = 'lnk' else: diff -r ff6b5b058fa0 -r ddc17eaf0f1b tests/test-largefiles-update.t --- a/tests/test-largefiles-update.t Fri Jan 09 18:38:02 2015 +0100 +++ b/tests/test-largefiles-update.t Fri Jan 09 18:38:02 2015 +0100 @@ -31,13 +31,13 @@ $ sleep 1 $ hg st $ hg debugdirstate --large --nodate - n 644 7 large1 - n 644 13 large2 + n 644 7 set large1 + n 644 13 set large2 $ hg up 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg debugdirstate --large --nodate - n 644 7 large1 - n 644 13 large2 + n 644 7 set large1 + n 644 13 set large2 Test that "hg merge" updates largefiles from "other" correctly @@ -337,8 +337,8 @@ remote turned local largefile large2 into a normal file keep (l)argefile or use (n)ormal file? l $ hg debugdirstate --nodates | grep large2 - a 0 -1 .hglf/large2 - r 0 0 large2 + a 0 -1 unset .hglf/large2 + r 0 0 set large2 $ hg status -A large2 A large2 $ cat large2 @@ -353,8 +353,8 @@ remote turned local largefile large3 into a normal file keep (l)argefile or use (n)ormal file? l $ hg debugdirstate --nodates | grep large3 - a 0 -1 .hglf/large3 - r 0 0 large3 + a 0 -1 unset .hglf/large3 + r 0 0 set large3 $ hg status -A large3 A large3 $ cat large3 diff -r ff6b5b058fa0 -r ddc17eaf0f1b tests/test-largefiles.t --- a/tests/test-largefiles.t Fri Jan 09 18:38:02 2015 +0100 +++ b/tests/test-largefiles.t Fri Jan 09 18:38:02 2015 +0100 @@ -44,13 +44,13 @@ $ sleep 1 $ hg st $ hg debugstate --nodates - n 644 41 .hglf/large1 - n 644 41 .hglf/sub/large2 - n 644 8 normal1 - n 644 8 sub/normal2 + n 644 41 set .hglf/large1 + n 644 41 set .hglf/sub/large2 + n 644 8 set normal1 + n 644 8 set sub/normal2 $ hg debugstate --large --nodates - n 644 7 large1 - n 644 7 sub/large2 + n 644 7 set large1 + n 644 7 set sub/large2 $ echo normal11 > normal1 $ echo normal22 > sub/normal2 $ echo large11 > large1 diff -r ff6b5b058fa0 -r ddc17eaf0f1b tests/test-merge-remove.t --- a/tests/test-merge-remove.t Fri Jan 09 18:38:02 2015 +0100 +++ b/tests/test-merge-remove.t Fri Jan 09 18:38:02 2015 +0100 @@ -21,8 +21,8 @@ (branch merge, don't forget to commit) $ hg debugstate --nodates - m 0 -2 bar - m 0 -2 foo1 + m 0 -2 unset bar + m 0 -2 unset foo1 copy: foo -> foo1 $ hg st -q @@ -37,8 +37,8 @@ $ hg rm -f foo1 bar $ hg debugstate --nodates - r 0 -1 bar - r 0 -1 foo1 + r 0 -1 set bar + r 0 -1 set foo1 copy: foo -> foo1 $ hg st -qC @@ -55,8 +55,8 @@ adding foo1 $ hg debugstate --nodates - n 0 -2 bar - n 0 -2 foo1 + n 0 -2 unset bar + n 0 -2 unset foo1 copy: foo -> foo1 $ hg st -qC @@ -74,8 +74,8 @@ reverting foo1 $ hg debugstate --nodates - n 0 -2 bar - n 0 -2 foo1 + n 0 -2 unset bar + n 0 -2 unset foo1 copy: foo -> foo1 $ hg st -qC diff -r ff6b5b058fa0 -r ddc17eaf0f1b tests/test-rebuildstate.t --- a/tests/test-rebuildstate.t Fri Jan 09 18:38:02 2015 +0100 +++ b/tests/test-rebuildstate.t Fri Jan 09 18:38:02 2015 +0100 @@ -17,8 +17,8 @@ state dump after $ hg debugstate --nodates | sort - n 644 -1 bar - n 644 -1 foo + n 644 -1 set bar + n 644 -1 set foo status