# HG changeset patch # User Gilles Moris # Date 1259621466 -3600 # Node ID 54cd28258ea71af85c12587793da365ec5941028 # Parent b2e87fde6806bdb013e4b4c3bb0d592569532782 status: add the --change option to display files changed in a revision This option is similar to the one already used for the diff command. Unfortunately, the c and C short option are already used for status, so there is no corresponding short option. However, there is no short option for --rev either, so that's consistent. diff -r b2e87fde6806 -r 54cd28258ea7 mercurial/commands.py --- a/mercurial/commands.py Tue Dec 01 09:53:02 2009 +0900 +++ b/mercurial/commands.py Mon Nov 30 23:51:06 2009 +0100 @@ -2842,7 +2842,8 @@ If one revision is given, it is used as the base revision. If two revisions are given, the differences between them are - shown. + shown. The --change option can also be used as a shortcut to list + the changed files of a revision from its first parent. The codes used to show the status of files are:: @@ -2856,7 +2857,18 @@ = origin of the previous file listed as A (added) """ - node1, node2 = cmdutil.revpair(repo, opts.get('rev')) + revs = opts.get('rev') + change = opts.get('change') + + if revs and change: + msg = _('cannot specify --rev and --change at the same time') + raise util.Abort(msg) + elif change: + node2 = repo.lookup(change) + node1 = repo[node2].parents()[0].node() + else: + node1, node2 = cmdutil.revpair(repo, revs) + cwd = (pats and repo.getcwd()) or '' end = opts.get('print0') and '\0' or '\n' copy = {} @@ -3660,6 +3672,7 @@ ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), ('', 'rev', [], _('show difference from revision')), + ('', 'change', '', _('list the changed files of a revision')), ] + walkopts, _('[OPTION]... [FILE]...')), "tag": diff -r b2e87fde6806 -r 54cd28258ea7 tests/test-debugcomplete.out --- a/tests/test-debugcomplete.out Tue Dec 01 09:53:02 2009 +0900 +++ b/tests/test-debugcomplete.out Mon Nov 30 23:51:06 2009 +0100 @@ -177,7 +177,7 @@ push: force, rev, ssh, remotecmd remove: after, force, include, exclude serve: accesslog, daemon, daemon-pipefds, errorlog, port, address, prefix, name, webdir-conf, pid-file, stdio, templates, style, ipv6, certificate -status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, include, exclude +status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, change, include, exclude summary: remote update: clean, check, date, rev addremove: similarity, include, exclude, dry-run diff -r b2e87fde6806 -r 54cd28258ea7 tests/test-help.out --- a/tests/test-help.out Tue Dec 01 09:53:02 2009 +0900 +++ b/tests/test-help.out Mon Nov 30 23:51:06 2009 +0100 @@ -270,7 +270,9 @@ parent. If one revision is given, it is used as the base revision. If two - revisions are given, the differences between them are shown. + revisions are given, the differences between them are shown. The --change + option can also be used as a shortcut to list the changed files of a + revision from its first parent. The codes used to show the status of files are: @@ -297,6 +299,7 @@ -C --copies show source of copied files -0 --print0 end filenames with NUL, for use with xargs --rev show difference from revision + --change list the changed files of a revision -I --include include names matching the given patterns -X --exclude exclude names matching the given patterns diff -r b2e87fde6806 -r 54cd28258ea7 tests/test-status --- a/tests/test-status Tue Dec 01 09:53:02 2009 +0900 +++ b/tests/test-status Mon Nov 30 23:51:06 2009 +0100 @@ -91,4 +91,27 @@ assert "-q" "-u" 1 assert "-m" "-a" 1 assert "-r" "-d" 1 +cd .. +hg init repo4 +cd repo4 +touch modified removed deleted +hg ci -q -A -m 'initial checkin' -d "1000000 0" +touch added unknown +hg add added +hg remove removed +rm deleted +echo x > modified +hg copy modified copied +hg ci -m 'test checkin' -d "1000001 0" +rm * +touch unrelated +hg ci -q -A -m 'unrelated checkin' -d "1000002 0" +echo "hg status --change 1:" +hg status --change 1 +echo "hg status --change 1 unrelated:" +hg status --change 1 unrelated +echo "hg status -C --change 1 added modified copied removed deleted:" +hg status -C --change 1 added modified copied removed deleted +echo "hg status -A --change 1" +hg status -A --change 1 diff -r b2e87fde6806 -r 54cd28258ea7 tests/test-status.out --- a/tests/test-status.out Tue Dec 01 09:53:02 2009 +0900 +++ b/tests/test-status.out Mon Nov 30 23:51:06 2009 +0100 @@ -124,3 +124,22 @@ adding deleted adding modified adding removed +hg status --change 1: +M modified +A added +A copied +R removed +hg status --change 1 unrelated: +hg status -C --change 1 added modified copied removed deleted: +M modified +A added +A copied + modified +R removed +hg status -A --change 1 +M modified +A added +A copied + modified +R removed +C deleted