Mercurial > hg
changeset 6200:acc40572da5b
'hg status -q' output skips non-tracked files.
The '-q' flag was ignored in status command. But this flag
can be used to hide non-tracked files in hg status output.
This small correction makes status command more general,
similar to 'svn status', where '-q' flag has the same effect.
The '-u' and '-A' flags have priority over '-q'.
A testcase and doc-string for status was extended to cover
'-q' flag.
author | Zoran Bosnjak <zoran.bosnjak@via.si> |
---|---|
date | Sat, 01 Mar 2008 22:30:03 +0100 |
parents | 0068809347d7 |
children | 305d4450036a |
files | mercurial/commands.py tests/test-help.out tests/test-status tests/test-status.out |
diffstat | 4 files changed, 64 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Fri Feb 29 14:48:21 2008 -0800 +++ b/mercurial/commands.py Sat Mar 01 22:30:03 2008 +0100 @@ -2493,6 +2493,9 @@ -i (ignored), -C (copies) or -A is given. Unless options described with "show only ..." are given, the options -mardu are used. + Option -q/--quiet hides untracked files unless explicitly + requested by -u. + NOTE: status may appear to disagree with diff if permissions have changed or a merge has occurred. The standard diff format does not report permission changes and diff only reports changes relative @@ -2537,6 +2540,12 @@ for opt, char, changes in ([ct for ct in explicit_changetypes if all or opts[ct[0]]] or changetypes): + + # skip unknown files if -q, but -u and -A have priority over -q + if (not opts['unknown']) and (not opts['all']): + if opt == 'unknown' and ui.quiet: + continue + if opts['no_status']: format = "%%s%s" % end else:
--- a/tests/test-help.out Fri Feb 29 14:48:21 2008 -0800 +++ b/tests/test-help.out Sat Mar 01 22:30:03 2008 +0100 @@ -222,6 +222,9 @@ -i (ignored), -C (copies) or -A is given. Unless options described with "show only ..." are given, the options -mardu are used. + Option -q/--quiet hides untracked files unless explicitly + requested by -u. + NOTE: status may appear to disagree with diff if permissions have changed or a merge has occurred. The standard diff format does not report permission changes and diff only reports changes relative
--- a/tests/test-status Fri Feb 29 14:48:21 2008 -0800 +++ b/tests/test-status Sat Mar 01 22:30:03 2008 +0100 @@ -44,3 +44,51 @@ hg status ignoreddir/file echo "hg status -i ignoreddir/file:" hg status -i ignoreddir/file +cd .. + +# check 'status -q' and some combinations +hg init repo3 +cd repo3 +touch modified removed deleted ignored +echo "^ignored$" > .hgignore +hg commit -A -m 'initial checkin' +touch added unknown ignored +hg add added +echo "test" >> modified +hg remove removed +rm deleted +hg copy modified copied + +# Run status with 2 different flags. +# Check if result is the same or different. +# If result is not as expected, raise error +function assert { + hg status $1 > ../a + hg status $2 > ../b + out=`diff ../a ../b` + if [ $? -ne 0 ]; then + out=1 + else + out=0 + fi + if [ $3 -eq 0 ]; then + df="same" + else + df="different" + fi + if [ $out -ne $3 ]; then + echo "Error on $1 and $2, should be $df." + fi +} + +# assert flag1 flag2 [0-same | 1-different] +assert "-q" "-mard" 0 +assert "-A" "-mardicCu" 0 +assert "-qA" "-mardicCu" 0 +assert "-qAu" "-A" 0 +assert "-qA" "-A" 0 +assert "-qu" "-u" 0 +assert "-q" "-u" 1 +assert "-m" "-a" 1 +assert "-r" "-d" 1 +