json: implement {shortlog} and {changelog} templates
These are the same dispatch function under the hood. The only difference
is the default number of entries to render and the template to use. So
it makes sense to use a shared template.
Format for {changelistentry} is similar to {changeset}. However, there
are differences to argument names and their values preventing us from
(easily) using the same template. (Perhaps there is room to consolidate
the templates as a follow-up.)
We're currently not recording some data in {changelistentry} that exists
in {changeset}. This includes the branch name. This should be added in
a follow-up. For now, something is better than nothing.
test command parsing and dispatch
$ hg init a
$ cd a
Redundant options used to crash (issue436):
$ hg -v log -v
$ hg -v log -v x
$ echo a > a
$ hg ci -Ama
adding a
Missing arg:
$ hg cat
hg cat: invalid arguments
hg cat [OPTION]... FILE...
output the current or given revision of files
options ([+] can be repeated):
-o --output FORMAT print output to file with formatted name
-r --rev REV print the given revision
--decode apply any matching decode filter
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
(use "hg cat -h" to show more help)
[255]
[defaults]
$ hg cat a
a
$ cat >> $HGRCPATH <<EOF
> [defaults]
> cat = -r null
> EOF
$ hg cat a
a: no such file in rev 000000000000
[1]
$ cd "$TESTTMP"
OSError "No such file or directory" / "The system cannot find the path
specified" should include filename even when it is empty
$ hg -R a archive ''
abort: *: '' (glob)
[255]
#if no-outer-repo
No repo:
$ hg cat
abort: no repository found in '$TESTTMP' (.hg not found)!
[255]
#endif