Mercurial completion plugin

This commit is contained in:
tinogomes 2011-08-14 03:13:19 -03:00
commit eef606eab5

View file

@ -0,0 +1,595 @@
# by tinogomes
#compdef hg
#autoload
local -a _1st_arguments
_1st_arguments=(
'add:add the specified files on the next commit'
'addremove:add all new files, delete all missing files'
{annotate,blame}':show changeset information by line for each file'
'archive:create an unversioned archive of a repository revision'
'backout:reverse effect of earlier changeset'
'bisect:subdivision search of changesets'
'bookmarks:track a line of development with movable markers'
'branch:set or show the current branch name'
'branches:list repository named branches'
'bundle:create a changegroup file'
'cat:output the current or given revision of files'
'clone:make a copy of an existing repository'
{commit,ci}':commit the specified files or all outstanding changes'
{copy,cp}':mark files as copied for the next commit'
'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'
'grep:search for a pattern in specified files and revisions'
'heads:show current repository heads or show branch heads'
'help:show help for a given topic or a help overview'
{identify,id}:'identify the working copy or specified revision'
{import,patch}':import an ordered set of patches'
{incoming,in}':show new changesets found in source'
'init:create a new repository in the given directory'
'locate:locate files matching specific patterns'
{log,history}':show revision history of entire repository or files'
'manifest:output the current or given revision of the project manifest'
'merge:merge working directory with another revision'
{outgoing,out}':show changesets not found in the destination'
'parents:show the parents of the working directory or revision'
'paths:show aliases for remote repositories'
'pull:pull changes from the specified source'
'push:push changes to the specified destination'
'recover:roll back an interrupted transaction'
{remove,rm}':remove the specified files on the next commit'
{rename,move,mv}':rename files; equivalent of copy + remove'
'resolve:redo merges or set/view the merge status of files'
'revert:restore individual files or directories to an earlier state'
'rollback:roll back the last transaction (dangerous)'
'root:print the root (top) of the current working directory'
'serve:start stand-alone webserver'
{showconfig,debugconfig}':show combined config settings from all hgrc files'
{status,st}':show changed files in the working directory'
{summary,sum}':summarize working directory state'
'tag:add one or more tags for the current or given revision'
'tags:list repository tags'
'tip:show the tip revision'
'unbundle:apply one or more changegroup files'
{update,up,checkout,co}':update working directory or switch revisions'
'verify:verify the integrity of the repository'
'version:output version and copyright information'
# additional help topics
'config:Configuration Files'
'dates:Date Formats'
'patterns:File Name Patterns'
'environment:Environment Variables'
'revisions:Specifying Single Revisions'
'multirevs:Specifying Multiple Revisions'
'revsets:Specifying Revision Sets'
'diffs:Diff Formats'
'merge-tools:Merge Tools'
'templating:Template Usage'
'urls:URL Paths'
'extensions:Using additional features'
'subrepos:Subrepositories'
'hgweb:Configuring hgweb'
'glossary:Glossary'
)
local expl
_arguments \
'(-h --help)'{-h,--help}'[show help]' \
'*:: :->subcmds' && return 0
if (( CURRENT == 1 )); then
_describe -t commands "hg subcommand" _1st_arguments
return
fi
local -a _global_options
_global_options=(
'(-R --repository REPO)'{-R,--repository}'[repository root directory or name of overlay bundle file]'
'(--cwd DIR)'--cwd'[change working directory]'
'(-y --noninteractive)'{-y,--noninteractive}'[do not prompt, assume `yes` for any required answers]'
'(-q --quiet)'{-q,--quiet}'[suppress output]'
'(-v --verbose)'{-v,--verbose}'[enable additional output]'
'(--config CONFIG [+])'--config'[set/override config option (use `section.name=value`)]'
'(--debug)'--debug'[enable debugging output]'
'(--debugger)'--debugger'[start debugger]'
'(--encoding ENCODE)'--encoding'[set the charset encoding (default: UTF-8)]'
'(--encodingmode MODE)'--encodingmode'[set the charset encoding mode (default: strict)]'
'(--traceback)'--traceback'[always print a traceback on exception]'
'(--time)'--time'[time how long the command takes]'
'(--profile)'--profile'[print command execution profile]'
'(--version)'--version'[output version information and exit]'
'(-h --help)'{-h,--help}'[display help and exit]'
)
local -a _command_options
case "$words[1]" in
add)
_command_options=(
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
addremove)
_command_options=(
'(-s --similarity SIMILARITY)'{-s,--similarity}'[guess renamed files by similarity (0<=s<=100)]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
annotate|blame)
_command_options=(
'(-r --rev REV)'{-r,--rev}'[annotate the specified revision]'
'(--no-follow)--no-follow[do not follow copies and renames]'
'(-a --text)'{-a,--text}'[treat all files as text]'
'(-u --user)'{-u,--user}'[list the author (long with -v)]'
'(-f --file)'{-f,--file}'[list the filename]'
'(-d --date)'{-d,--date}'[list the date (short with -q)]'
'(-n --number)'{-n,--number}'[list the revision number (default)]'
'(-c --changeset)'{-c,--changeset}'[list the changeset]'
'(-l --line-number)'{-l,--line-number}'[show line number at the first appearance]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
archive)
_command_options=(
'(--no-decode)--no-decode[do not pass files through decoders]'
'(-p --prefix PREFIX)'{-p,--prefix}'[directory prefix for files in archive]'
'(-r --rev REV)'{-r,--rev}'[revision to distribute]'
'(-t --type TYPE)'{-t,--type}'[type of distribution to create]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
backout)
_command_options=(
'(--merge)--merge[merge with old dirstate parent after backout]'
'(--parent REV)--parent[parent to choose when backing out merge]'
'(-t --tool VALUE)'{-t,--tool}'[specify merge tool]'
'(-r --rev REV)'{-r,--rev}'[revision to backout]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-m --message TEXT)'{-m,--message}'[use text as commit message]'
'(-l --logfile FILE)'{-l,--logfile}'[read commit message from file]'
'(-d --date DATE)'{-d,--date}'[record the specified date as commit date]'
'(-u --user USER)'{-u,--user}'[record the specified user as committer]'
)
;;
bisect)
_command_options=(
'(-r --reset)'{-r,--reset}'[reset bisect state]'
'(-g --good)'{-g,--good}'[mark changeset good]'
'(-b --bad)'{-b,--bad}'[mark changeset bad]'
'(-s --skip)'{-s,--skip}'[skip testing changeset]'
'(-c --command CMD)'{-c,--command}'[use command to check changeset state]'
'(-U --noupdate)'{-U,--noupdate}'[do not update to target]'
)
;;
bookmarks)
_command_options=(
'(-f --force)'{-f,--force}'[force]'
'(-r --rev REV)'{-r,--rev}'[revision]'
'(-d --delete)'{-d,--delete}'[delete a given bookmark]'
'(-m --rename NAME)'{-m,--rename}'[rename a given bookmark]'
)
;;
branch)
_command_options=(
'(-f --force)-f[set branch name even if it shadows an existing branch]'
'(-C --clean)-C[reset branch name to parent branch name]'
)
;;
branches)
_command_options=(
'(-a --active)'{-a,--active}'[show only branches that have unmerged heads]'
'(-c --closed)'{-c,--closed}'[show normal and closed branches]'
)
;;
bundle)
_command_options=(
'(-f --force)'{-f,--force}'[run even when the destination is unrelated]'
'(-r --rev REV [+])'{-r,--rev}'[a changeset intended to be added to the destination]'
'(-b --branch BRANCH [+])'{-b,--branch}'[a specific branch you would like to bundle]'
'(--base REV [+])--base[a base changeset assumed to be available at the destination]'
'(-a --all)'{-a,--all}'[bundle all changesets in the repository]'
'(-t --type TYPE)'{-t,--type}'[bundle compression type to use (default: bzip2)]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
)
;;
cat)
_command_options=(
'(-o --output FORMAT)'{-o,--output}'[print output to file with formatted name]'
'(-r --rev REV)'{-r,--rev}'[print the given revision]'
'(--decode)--decode[apply any matching decode filter]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
clone)
_command_options=(
'(-U --noupdate)'{-U,--noupdate}'[the clone will include an empty working copy (only a repository)]'
'(-u --updaterev REV)'{-u,--updaterev}'[revision, tag or branch to check out]'
'(-r --rev REV [+])'{-r,--rev}'[include the specified changeset]'
'(-b --branch BRANCH [+])'{-b,--branch}'[clone only the specified branch]'
'(--pull)--pull[use pull protocol to copy metadata]'
'(--uncompressed)--uncompressed[use uncompressed transfer (fast over LAN)]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
)
;;
commit|ci)
_command_options=(
'(-A --addremove)'{-A,--addremove}'[mark new/missing files as added/removed before committing]'
'(--close-branch)--close-branch[mark a branch as closed, hiding it from the branch list]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-m --message TEXT)'{-m,--message}'[use text as commit message]'
'(-l --logfile FILE)'{-l,--logfile}'[read commit message from file]'
'(-d --date DATE)'{-d,--date}'[record the specified date as commit date]'
'(-u --user USER)'{-u,--user}'[record the specified user as committer]'
)
;;
copy|cp)
_command_options=(
'(-A --after)'{-A,--after}'[record a copy that has already occurred]'
'(-f --force)'{-f,--force}'[forcibly copy over an existing managed file]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
diff)
_command_options=(
'(-r --rev REV [+])'{-r,--rev}'[revision]'
'(-c --change REV)'{-c,--change}'[change made by revision]'
'(-a --text)'{-a,--text}'[treat all files as text]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(--nodates)--nodates[omit dates from diff headers]'
'(-p --show-function)'{-p,--show-function}'[show which function each change is in]'
'(--reverse)--reverse[produce a diff that undoes the changes]'
'(-w --ignore-all-space)'{-w,--ignore-all-space}'[ignore white space when comparing lines]'
'(-b --ignore-space-change)-b[ignore changes in the amount of white space]'
'(-B --ignore-blank-lines)'{-B,--ignore-blank-lines}'[ignore changes whose lines are all blank]'
'(-U --unified NUM)'{-U,--unified}'[number of lines of context to show]'
'(--stat)--stat[output diffstat-style summary of changes]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
)
;;
export)
_command_options=(
'(-o --output FORMAT)'{-o,--output}'[print output to file with formatted name]'
'(--switch-parent)--switch-parent[diff against the second parent]'
'(-r --rev REV [+])'{-r,--rev}'[revisions to export]'
'(-a --text)'{-a,--text}'[treat all files as text]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(--nodates)--nodates[omit dates from diff headers]'
)
;;
forget)
_command_options=(
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
grep)
_command_options=(
'(-0 --print0)'{-0,--print0}'[end fields with NUL]'
'(--all)--all[print all revisions that match]'
'(-f --follow)'{-f,--follow}'[follow changeset history, or file history across copies and renames]'
'(-i --ignore-case)'{-i,--ignore-case}'[ignore case when matching]'
'(-l --files-with-matches)'{-l,--files-with-matches}'[print only filenames and revisions that match]'
'(-n --line-number)'{-n,--line-number}'[print matching line numbers]'
'(-r --rev REV [+])'{-r,--rev}'[only search files changed within revision range]'
'(-u --user)'{-u,--user}'[list the author (long with -v)]'
'(-d --date)'{-d,--date}'[list the date (short with -q)]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
heads)
_command_options=(
'(-r --rev STARTREV)'{-r,--rev}'[show only heads which are descendants of STARTREV]'
'(-t --topo)'{-t,--topo}'[show topological heads only]'
'(-c --closed)'{-c,--closed}'[show normal and closed branch heads]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
)
;;
identify|id)
_command_options=(
'(-r --rev REV)'{-r,--rev}'[identify the specified revision]'
'(-n --num)'{-n,--num}'[show local revision number]'
'(-i --id)'{-i,--id}'[show global revision id]'
'(-b --branch)'{-b,--branch}'[show branch]'
'(-t --tags)'{-t,--tags}'[show tags]'
'(-B --bookmarks)'{-B,--bookmarks}'[show bookmarks]'
)
;;
import|patch)
_command_options=(
'(-p --strip NUM)'{-p,--strip}'[directory strip option for patch. This has the same meaning as the corresponding patch option (default: 1)]'
'(-b --base PATH)'{-b,--base}'[base path]'
'(-f --force)'{-f,--force}'[skip check for outstanding uncommitted changes]'
'(--no-commit)--no-commit[do not commit, just update the working directory]'
'(--exact)--exact[apply patch to the nodes from which it was generated]'
'(--import-branch)--import-branch[use any branch information in patch (implied by --exact)]'
'(-m --message TEXT)'{-m,--message}'[use text as commit message]'
'(-l --logfile FILE)'{-l,--logfile}'[read commit message from file]'
'(-d --date DATE)'{-d,--date}'[record the specified date as commit date]'
'(-u --user USER)'{-u,--user}'[record the specified user as committer]'
'(-s --similarity SIMILARITY)'{-s,--similarity}'[guess renamed files by similarity (0<=s<=100)]'
)
;;
incoming|in)
_command_options=(
'(-f --force)'{-f,--force}'[run even if remote repository is unrelated]'
'(-n --newest-first)'{-n,--newest-first}'[show newest record first]'
'(--bundle FILE)--bundle[file to store the bundles into]'
'(-r --rev REV [+])'{-r,--rev}'[a remote changeset intended to be added]'
'(-B --bookmarks)'{-B,--bookmarks}'[compare bookmarks]'
'(-b --branch BRANCH [+])'{-b,--branch}'[a specific branch you would like to pull]'
'(-p --patch)'{-p,--patch}'[show patch]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(-l --limit NUM)'{-l,--limit}'[limit number of changes displayed]'
'(-M --no-merges)'{-M,--no-merges}'[do not show merges]'
'(--stat)--stat[output diffstat-style summary of changes]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
)
;;
init)
_command_options=(
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
)
;;
locate)
_command_options=(
'(-r --rev REV)'{-r,--rev}'[search the repository as it is in REV]'
'(-0 --print0)'{-0,--print0}'[end filenames with NUL, for use with xargs]'
'(-f --fullpath)'{-f,--fullpath}'[print complete paths from the filesystem root]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
log|history)
_command_options=(
'(-f --follow)'{-f,--follow}'[follow changeset history, or file history across copies and renames]'
'(--follow-first)--follow-first[only follow the first parent of merge changesets]'
'(-d --date DATE)'{-d,--date}'[show revisions matching date spec]'
'(-C --copies)'{-C,--copies}'[show copied files]'
'(-k --keyword TEXT [+])'{-k,--keyword}'[do case-insensitive search for a given text]'
'(-r --rev REV [+])'{-r,--rev}'[show the specified revision or range]'
'(--removed)--removed[include revisions where files were removed]'
'(-m --only-merges)'{-m,--only-merges}'[show only merges]'
'(-u --user USER [+])'{-u,--user}'[revisions committed by user]'
'(-b --branch BRANCH [+])'{-b,--branch}'[show changesets within the given named branch]'
'(-P --prune REV [+])'{-P,--prune}'[do not display revision or any of its ancestors]'
'(-p --patch)'{-p,--patch}'[show patch]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(-l --limit NUM)'{-l,--limit}'[limit number of changes displayed]'
'(-M --no-merges)'{-M,--no-merges}'[do not show merges]'
'(--stat)--stat[output diffstat-style summary of changes]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
manifest)
_command_options=(
'(-r --rev REV)'{-r,--rev}'[revision to display]'
)
;;
merge)
_command_options=(
'(-f --force)'{-f,--force}'[force a merge with outstanding changes]'
'(-t --tool VALUE)'{-t,--tool}'[specify merge tool]'
'(-r --rev REV)'{-r,--rev}'[revision to merge]'
'(-P --preview)'{-P,--preview}'[review revisions to merge (no merge is performed)]'
)
;;
outgoing|out)
_command_options=(
'(-f --force)'{-f,--force}'[run even when the destination is unrelated]'
'(-r --rev REV [+])'{-r,--rev}'[a changeset intended to be included in the destination]'
'(-n --newest-first)'{-n,--newest-first}'[show newest record first]'
'(-B --bookmarks)'{-B,--bookmarks}'[compare bookmarks]'
'(-b --branch BRANCH [+])'{-b,--branch}'[a specific branch you would like to push]'
'(-p --patch)'{-p,--patch}'[show patch]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(-l --limit NUM)'{-l,--limit}'[limit number of changes displayed]'
'(-M --no-merges)'{-M,--no-merges}'[do not show merges]'
'(--stat)--stat[output diffstat-style summary of changes]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
)
;;
parents)
_command_options=(
'(-r --rev REV)'{-r,--rev}'[show parents of the specified revision]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
)
;;
pull)
_command_options=(
'(-u --update)'{-u,--update}'[update to new branch head if changesets were pulled]'
'(-f --force)'{-f,--force}'[run even when remote repository is unrelated]'
'(-r --rev REV [+])'{-r,--rev}'[a remote changeset intended to be added]'
'(-B --bookmark BOOKMARK [+])'{-B,--bookmark}'[bookmark to pull]'
'(-b --branch BRANCH [+])'{-b,--branch}'[a specific branch you would like to pull]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
)
;;
push)
_command_options=(
'(-f --force)'{-f,--force}'[force push]'
'(-r --rev REV [+])'{-r,--rev}'[a changeset intended to be included in the destination]'
'(-B --bookmark BOOKMARK [+])'{-B,--bookmark}'[bookmark to push]'
'(-b --branch BRANCH [+])'{-b,--branch}'[a specific branch you would like to push]'
'(--new-branch)--new-branch[allow pushing a new branch]'
'(-e --ssh CMD)'{-e,--ssh}'[specify ssh command to use]'
'(--remotecmd CMD)--remotecmd[specify hg command to run on the remote side]'
'(--insecure)--insecure[do not verify server certificate (ignoring web.cacerts config)]'
)
;;
remove|rm)
_command_options=(
'(-A --after)'{-A,--after}'[record delete for missing files]'
'(-f --force)'{-f,--force}'[remove (and delete) file even if added or modified]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
rename|move|mv)
_command_options=(
'(-A --after)'{-A,--after}'[record a rename that has already occurred]'
'(-f --force)'{-f,--force}'[forcibly copy over an existing managed file]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
resolve)
_command_options=(
'(-a --all)'{-a,--all}'[select all unresolved files]'
'(-l --list)'{-l,--list}'[list state of files needing merge]'
'(-m --mark)'{-m,--mark}'[mark files as resolved]'
'(-u --unmark)'{-u,--unmark}'[mark files as unresolved]'
'(-t --tool VALUE)'{-t,--tool}'[specify merge tool]'
'(-n --no-status)'{-n,--no-status}'[hide status prefix]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
)
;;
revert)
_command_options=(
'(-a --all)'{-a,--all}'[revert all changes when no arguments given]'
'(-d --date DATE)'{-d,--date}'[tipmost revision matching date]'
'(-r --rev REV)'{-r,--rev}'[revert to the specified revision]'
'(--no-backup)--no-backup[do not save backup copies of files]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
rollback)
_command_options=(
'(-n --dry-run)'{-n,--dry-run}'[do not perform actions, just print output]'
)
;;
serve)
_command_options=(
'(-A --accesslog FILE)'{-A,--accesslog}'[name of access log file to write to]'
'(-d --daemon)'{-d,--daemon}'[run server in background]'
'(--daemon-pipefds NUM)--daemon-pipefds[used internally by daemon mode]'
'(-E --errorlog FILE)'{-E,--errorlog}'[name of error log file to write to]'
'(-p --port PORT)'{-p,--port}'[port to listen on (default: 8000)]'
'(-a --address ADDR)'{-a,--address}'[address to listen on (default: all interfaces)]'
'(--prefix PREFIX)--prefix[prefix path to serve from (default: server root)]'
'(-n --name NAME)'{-n,--name}'[name to show in web pages (default: working directory)]'
'(--web-conf FILE)--web-conf[name of the hgweb config file (see "hg help hgweb")]'
'(--pid-file FILE)--pid-file[name of file to write process ID to]'
'(--stdio)--stdio[for remote clients]'
'(-t --templates TEMPLATE)'{-t,--templates}'[web templates to use]'
'(--style STYLE)--style[template style to use]'
'(-6 --ipv6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]'
'(--certificate FILE)--certificate[SSL certificate file]'
)
;;
showconfig|debugconfig)
_command_options=(
'(-u -untrusted)'{-u,-untrusted}'[show untrusted configuration options]'
)
;;
status|st)
_command_options=(
'(-A --all)'{-A,--all}'[show status of all files]'
'(-m --modified)'{-m,--modified}'[show only modified files]'
'(-a --added)'{-a,--added}'[show only added files]'
'(-r --removed)'{-r,--removed}'[show only removed files]'
'(-d --deleted)'{-d,--deleted}'[show only deleted (but tracked) files]'
'(-c --clean)'{-c,--clean}'[show only files without changes]'
'(-u --unknown)'{-u,--unknown}'[show only unknown (not tracked) files]'
'(-i --ignored)'{-i,--ignored}'[show only ignored files]'
'(-n --no-status)'{-n,--no-status}'[hide status prefix]'
'(-C --copies)'{-C,--copies}'[show source of copied files]'
'(-0 --print0)'{-0,--print0}'[end filenames with NUL, for use with xargs]'
'(--rev REV [+])--rev[show difference from revision]'
'(--change REV)--change[list the changed files of a revision]'
'(-I --include PATTERN [+])'{-I,--include}'[include names matching the given patterns]'
'(-X --exclude PATTERN [+])'{-X,--exclude}'[exclude names matching the given patterns]'
'(-S --subrepos)'{-S,--subrepos}'[recurse into subrepositories]'
)
;;
summary|sum)
_command_options=(
'(--remote)--remote[check for push and pull]'
)
;;
tag)
_command_options=(
'(-f --force)'{-f,--force}'[force tag]'
'(-l --local)'{-l,--local}'[make the tag local]'
'(-r --rev REV)'{-r,--rev}'[revision to tag]'
'(--remove)--remove[remove a tag]'
'(-e --edit)'{-e,--edit}'[edit commit message]'
'(-m --message TEXT)'{-m,--message}'[use <text> as commit message]'
'(-d --date DATE)'{-d,--date}'[record the specified date as commit date]'
'(-u --user USER)'{-u,--user}'[record the specified user as committer]'
)
;;
tip)
_command_options=(
'(-p --patch)'{-p,--patch}'[show patch]'
'(-g --git)'{-g,--git}'[use git extended diff format]'
'(--style STYLE)--style[display using template map file]'
'(--template TEMPLATE)--template[display with template]'
)
;;
unbundle)
_command_options=(
'(-u --update)'{-u,--update}'[update to new branch head if changesets were unbundled]'
)
;;
update|up|checkout|co)
_command_options=(
'(-C --clean)'{-C,--clean}'[discard uncommitted changes (no backup)]'
'(-c --check)'{-c,--check}'[update across branches if no uncommitted changes]'
'(-d --date DATE)'{-d,--date}'[tipmost revision matching date]'
'(-r --rev REV)'{-r,--rev}'[revision]'
)
;;
esac
_arguments \
$_global_options \
$_command_options \
"*::archieve file:_files -g '(#i)*.*'" && return 0