##// END OF EJS Templates
help: do not show full help text for command on option errors...
help: do not show full help text for command on option errors Example $ hg clone --jump foo bar hg clone: option --jump not recognized hg clone [OPTION]... SOURCE [DEST] make a copy of an existing repository options: -U --noupdate the clone will include an empty working copy (only a repository) -u --updaterev REV revision, tag or branch to check out -r --rev REV [+] include the specified changeset -b --branch BRANCH [+] clone only the specified branch --pull use pull protocol to copy metadata --uncompressed use uncompressed transfer (fast over LAN) -e --ssh CMD specify ssh command to use --remotecmd CMD specify hg command to run on the remote side --insecure do not verify server certificate (ignoring web.cacerts config) [+] marked option can be specified multiple times use "hg help clone" to show the full help text Motivation for this change If the user already has specified the command, he probably already knows the command to some extent. Apparently, he has a problem with the options, so we show him just the synopsis with the short help and the details about the options, with a hint on the last line how to get the full help text. Why is Mercurial better with this change? Experts who just forgot about the details of an option don't get that much text thrown at them, while the newbies still get a hint on the last line how to get the full help text.

File last commit:

r13950:14d0553b default
r13950:14d0553b default
Show More
test-alias.t
390 lines | 9.4 KiB | text/troff | Tads3Lexer
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434 $ HGFOO=BAR; export HGFOO
Nicolas Dumazet
tests: unify test-alias
r11814 $ cat >> $HGRCPATH <<EOF
Adrian Buehlmann
tests: add testcase for 208fc9ad6a48 to test-alias.t...
r12656 > [extensions]
> graphlog=
>
Nicolas Dumazet
tests: unify test-alias
r11814 > [alias]
> myinit = init
> cleanstatus = status -c
> unknown = bargle
> ambiguous = s
> recursive = recursive
> nodefinition =
> no--cwd = status --cwd elsewhere
> no-R = status -R elsewhere
> no--repo = status --repo elsewhere
> no--repository = status --repository elsewhere
> mylog = log
> lognull = log -r null
> shortlog = log --template '{rev} {node|short} | {date|isodate}\n'
> dln = lognull --debug
> nousage = rollback
> put = export -r 0 -o "\$FOO/%R.diff"
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 > blank = !echo
> self = !echo '\$0'
> echo = !echo '\$@'
> echo1 = !echo '\$1'
> echo2 = !echo '\$2'
> echo13 = !echo '\$1' '\$3'
> count = !hg log -r '\$@' --template='.' | wc -c | sed -e 's/ //g'
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 > mcount = !hg log \$@ --template='.' | wc -c | sed -e 's/ //g'
Nicolas Dumazet
tests: unify test-alias
r11814 > rt = root
Adrian Buehlmann
tests: add testcase for 208fc9ad6a48 to test-alias.t...
r12656 > tglog = glog --template "{rev}:{node|short}: '{desc}' {branches}\n"
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932 > idalias = id
> idaliaslong = id
> idaliasshell = !echo test
> parentsshell1 = !echo one
> parentsshell2 = !echo two
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434 > escaped1 = !echo 'test\$\$test'
> escaped2 = !echo "HGFOO is \$\$HGFOO"
> escaped3 = !echo "\$1 is \$\$\$1"
> escaped4 = !echo '\$\$0' '\$\$@'
Nicolas Dumazet
tests: unify test-alias
r11814 >
> [defaults]
> mylog = -q
> lognull = -q
> log = -v
> EOF
basic
$ hg myinit alias
unknown
$ hg unknown
alias 'unknown' resolves to unknown command 'bargle'
$ hg help unknown
alias 'unknown' resolves to unknown command 'bargle'
ambiguous
$ hg ambiguous
alias 'ambiguous' resolves to ambiguous command 's'
$ hg help ambiguous
alias 'ambiguous' resolves to ambiguous command 's'
recursive
$ hg recursive
alias 'recursive' resolves to unknown command 'recursive'
$ hg help recursive
alias 'recursive' resolves to unknown command 'recursive'
no definition
$ hg nodef
no definition for alias 'nodefinition'
$ hg help nodef
no definition for alias 'nodefinition'
invalid options
$ hg no--cwd
error in definition for alias 'no--cwd': --cwd may only be given on the command line
$ hg help no--cwd
error in definition for alias 'no--cwd': --cwd may only be given on the command line
$ hg no-R
error in definition for alias 'no-R': -R may only be given on the command line
$ hg help no-R
error in definition for alias 'no-R': -R may only be given on the command line
$ hg no--repo
error in definition for alias 'no--repo': --repo may only be given on the command line
$ hg help no--repo
error in definition for alias 'no--repo': --repo may only be given on the command line
$ hg no--repository
error in definition for alias 'no--repository': --repository may only be given on the command line
$ hg help no--repository
error in definition for alias 'no--repository': --repository may only be given on the command line
$ cd alias
no usage
$ hg nousage
no rollback information available
$ echo foo > foo
$ hg ci -Amfoo
adding foo
with opts
$ hg cleanst
C foo
with opts and whitespace
$ hg shortlog
0 e63c23eaa88a | 1970-01-01 00:00 +0000
interaction with defaults
$ hg mylog
0:e63c23eaa88a
$ hg lognull
-1:000000000000
properly recursive
$ hg dln
changeset: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
manifest: -1:0000000000000000000000000000000000000000
user:
date: Thu Jan 01 00:00:00 1970 +0000
extra: branch=default
path expanding
$ FOO=`pwd` hg put
$ cat 0.diff
# HG changeset patch
# User test
# Date 0 0
# Node ID e63c23eaa88ae77967edcf4ea194d31167c478b0
# Parent 0000000000000000000000000000000000000000
foo
diff -r 000000000000 -r e63c23eaa88a foo
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/foo Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,1 @@
+foo
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 simple shell aliases
Nicolas Dumazet
tests: unify test-alias
r11814
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 $ hg blank
$ hg blank foo
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 $ hg self
self
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 $ hg echo
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg echo foo
foo
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 $ hg echo 'test $2' foo
test $2 foo
$ hg echo1 foo bar baz
foo
$ hg echo2 foo bar baz
bar
$ hg echo13 foo bar baz test
foo baz
$ hg echo2 foo
$ echo bar > bar
$ hg ci -qA -m bar
$ hg count .
1
$ hg count 'branch(default)'
2
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 $ hg mcount -r '"branch(default)"'
2
Adrian Buehlmann
tests: add testcase for 208fc9ad6a48 to test-alias.t...
r12656 $ hg tglog
@ 1:7e7f92de180e: 'bar'
|
o 0:e63c23eaa88a: 'foo'
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932
shadowing
$ hg i
hg: command 'i' is ambiguous:
idalias idaliaslong idaliasshell identify import incoming init
[255]
$ hg id
7e7f92de180e tip
$ hg ida
hg: command 'ida' is ambiguous:
idalias idaliaslong idaliasshell
[255]
$ hg idalias
7e7f92de180e tip
$ hg idaliasl
7e7f92de180e tip
$ hg idaliass
test
$ hg parentsshell
hg: command 'parentsshell' is ambiguous:
parentsshell1 parentsshell2
[255]
$ hg parentsshell1
one
$ hg parentsshell2
two
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 shell aliases with global options
$ hg init sub
$ cd sub
$ hg count 'branch(default)'
0
$ hg -v count 'branch(default)'
0
$ hg -R .. count 'branch(default)'
0
$ hg --cwd .. count 'branch(default)'
2
$ hg echo --cwd ..
--cwd ..
repo specific shell aliases
$ cat >> .hg/hgrc <<EOF
> [alias]
> subalias = !echo sub \$@
> EOF
$ cat >> ../.hg/hgrc <<EOF
> [alias]
> mainalias = !echo main \$@
> EOF
shell alias defined in current repo
$ hg subalias
sub
$ hg --cwd .. subalias > /dev/null
hg: unknown command 'subalias'
[255]
$ hg -R .. subalias > /dev/null
hg: unknown command 'subalias'
[255]
shell alias defined in other repo
$ hg mainalias > /dev/null
hg: unknown command 'mainalias'
[255]
$ hg -R .. mainalias
main
$ hg --cwd .. mainalias
main
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989
Nicolas Dumazet
tests: unify test-alias
r11814
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434 shell aliases with escaped $ chars
$ hg escaped1
test$test
$ hg escaped2
HGFOO is BAR
$ hg escaped3 HGFOO
HGFOO is BAR
$ hg escaped4 test
$0 $@
Nicolas Dumazet
tests: unify test-alias
r11814 invalid arguments
$ hg rt foo
hg rt: invalid arguments
hg rt
alias for: hg root
Adrian Buehlmann
help: do not show full help text for command on option errors...
r13950 use "hg help rt" to show the full help text
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Steve Losh
alias: fail gracefully when invalid global options are given (issue2442)...
r12748
invalid global arguments for normal commands, aliases, and shell aliases
$ hg --invalid root
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
use "hg help" for the full list of commands or "hg -v" for details
[255]
$ hg --invalid mylog
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
use "hg help" for the full list of commands or "hg -v" for details
[255]
$ hg --invalid blank
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
use "hg help" for the full list of commands or "hg -v" for details
[255]