mirror of
https://github.com/facebook/sapling.git
synced 2024-12-28 23:54:12 +03:00
5168c29e12
Summary: On Windows, there are *two* 8-bit encodings for each process. * The ANSI code page is used for all `...A` system calls, and this is what Mercurial uses internally. It can be overridden using the `--encoding` command line option. * The OEM code page is used when outputing to the console. Mercurial has no concept of this, and instead renders to the console using the ANSI code page, which results in mojibake like "Θ" instead of "é". Add the concept of an `outputencoding`. If this differs from `encoding`, we convert from the local encoding to the output encoding before writing to the console. On non-Windows platforms, this defaults to the same encoding as the local encoding, so this is a no-op unless `--outputencoding` is manually specified. On Windows, this defaults to the codepage given by `GetOEMCP`, causing output to be converted to the OEM codepage before being printed. For ordinary strings, the local encoded version is wrapped by `localstr` if the encoding does not round-trip cleanly. This means the output encoding works even if the character is not represented in the local encoding. Unfortunately, the templater is not localstr-clean, which means strings can get flattened down to the local encoding and the original code points are lost. In this case we can only output characters which are in the intersection of the encoding and the output encoding. Most US English Windows systems use cp1252 for the ANSI code page and cp437 for the OEM code page. These both contain many accented characters, so users with accented characters in their names will now see them correctly rendered. All of this only applies to Python 2.7. In Python 3, everything is Unicode, the `--encoding` and `--outputencoding` options do nothing, and it just works. Reviewed By: quark-zju, ikostia Differential Revision: D19951381 fbshipit-source-id: d5cb8b5bfe2bc131b2e6c3b892137a48b2139ca9
1752 lines
57 KiB
Perl
1752 lines
57 KiB
Perl
#require py2
|
|
#chg-compatible
|
|
|
|
#require no-fsmonitor
|
|
|
|
Short help:
|
|
|
|
$ hg
|
|
Mercurial Distributed SCM
|
|
|
|
hg COMMAND [OPTIONS]
|
|
|
|
These are some common Mercurial commands. Use 'hg help commands' to list all
|
|
commands, and 'hg help COMMAND' to get help on a specific command.
|
|
|
|
Get the latest commits from the server:
|
|
|
|
pull pull changes from the specified source
|
|
|
|
View commits:
|
|
|
|
show show commit in detail
|
|
diff show differences between commits
|
|
|
|
Check out a commit:
|
|
|
|
checkout check out a specific commit
|
|
|
|
Work with your checkout:
|
|
|
|
status list files with pending changes
|
|
add start tracking the specified files
|
|
remove delete the specified tracked files
|
|
forget stop tracking the specified files
|
|
revert change the specified files to match a commit
|
|
purge delete untracked files
|
|
|
|
Commit changes and modify commits:
|
|
|
|
commit save all pending changes or specified files in a new commit
|
|
|
|
Rearrange commits:
|
|
|
|
graft copy commits from a different location
|
|
|
|
Undo changes:
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
Other commands:
|
|
|
|
config show config settings
|
|
grep search for a pattern in tracked files in the working directory
|
|
|
|
Additional help topics:
|
|
|
|
filesets specifying files by their characteristics
|
|
glossary common terms
|
|
patterns specifying files by file name pattern
|
|
revisions specifying commits
|
|
templating customizing output with templates
|
|
|
|
$ hg -q
|
|
Mercurial Distributed SCM
|
|
|
|
hg COMMAND [OPTIONS]
|
|
|
|
These are some common Mercurial commands. Use 'hg help commands' to list all
|
|
commands, and 'hg help COMMAND' to get help on a specific command.
|
|
|
|
Get the latest commits from the server:
|
|
|
|
pull pull changes from the specified source
|
|
|
|
View commits:
|
|
|
|
show show commit in detail
|
|
diff show differences between commits
|
|
|
|
Check out a commit:
|
|
|
|
checkout check out a specific commit
|
|
|
|
Work with your checkout:
|
|
|
|
status list files with pending changes
|
|
add start tracking the specified files
|
|
remove delete the specified tracked files
|
|
forget stop tracking the specified files
|
|
revert change the specified files to match a commit
|
|
purge delete untracked files
|
|
|
|
Commit changes and modify commits:
|
|
|
|
commit save all pending changes or specified files in a new commit
|
|
|
|
Rearrange commits:
|
|
|
|
graft copy commits from a different location
|
|
|
|
Undo changes:
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
Other commands:
|
|
|
|
config show config settings
|
|
grep search for a pattern in tracked files in the working directory
|
|
|
|
Additional help topics:
|
|
|
|
filesets specifying files by their characteristics
|
|
glossary common terms
|
|
patterns specifying files by file name pattern
|
|
revisions specifying commits
|
|
templating customizing output with templates
|
|
|
|
$ hg help
|
|
Mercurial Distributed SCM
|
|
|
|
hg COMMAND [OPTIONS]
|
|
|
|
These are some common Mercurial commands. Use 'hg help commands' to list all
|
|
commands, and 'hg help COMMAND' to get help on a specific command.
|
|
|
|
Get the latest commits from the server:
|
|
|
|
pull pull changes from the specified source
|
|
|
|
View commits:
|
|
|
|
show show commit in detail
|
|
diff show differences between commits
|
|
|
|
Check out a commit:
|
|
|
|
checkout check out a specific commit
|
|
|
|
Work with your checkout:
|
|
|
|
status list files with pending changes
|
|
add start tracking the specified files
|
|
remove delete the specified tracked files
|
|
forget stop tracking the specified files
|
|
revert change the specified files to match a commit
|
|
purge delete untracked files
|
|
|
|
Commit changes and modify commits:
|
|
|
|
commit save all pending changes or specified files in a new commit
|
|
|
|
Rearrange commits:
|
|
|
|
graft copy commits from a different location
|
|
|
|
Undo changes:
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
Other commands:
|
|
|
|
config show config settings
|
|
grep search for a pattern in tracked files in the working directory
|
|
|
|
Additional help topics:
|
|
|
|
filesets specifying files by their characteristics
|
|
glossary common terms
|
|
patterns specifying files by file name pattern
|
|
revisions specifying commits
|
|
templating customizing output with templates
|
|
|
|
$ hg -q help
|
|
Mercurial Distributed SCM
|
|
|
|
hg COMMAND [OPTIONS]
|
|
|
|
These are some common Mercurial commands. Use 'hg help commands' to list all
|
|
commands, and 'hg help COMMAND' to get help on a specific command.
|
|
|
|
Get the latest commits from the server:
|
|
|
|
pull pull changes from the specified source
|
|
|
|
View commits:
|
|
|
|
show show commit in detail
|
|
diff show differences between commits
|
|
|
|
Check out a commit:
|
|
|
|
checkout check out a specific commit
|
|
|
|
Work with your checkout:
|
|
|
|
status list files with pending changes
|
|
add start tracking the specified files
|
|
remove delete the specified tracked files
|
|
forget stop tracking the specified files
|
|
revert change the specified files to match a commit
|
|
purge delete untracked files
|
|
|
|
Commit changes and modify commits:
|
|
|
|
commit save all pending changes or specified files in a new commit
|
|
|
|
Rearrange commits:
|
|
|
|
graft copy commits from a different location
|
|
|
|
Undo changes:
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
Other commands:
|
|
|
|
config show config settings
|
|
grep search for a pattern in tracked files in the working directory
|
|
|
|
Additional help topics:
|
|
|
|
filesets specifying files by their characteristics
|
|
glossary common terms
|
|
patterns specifying files by file name pattern
|
|
revisions specifying commits
|
|
templating customizing output with templates
|
|
|
|
Test extension help:
|
|
$ hg help extensions --config extensions.rebase= --config extensions.children=
|
|
Using Additional Features
|
|
"""""""""""""""""""""""""
|
|
|
|
Mercurial has the ability to add new features through the use of
|
|
extensions. Extensions may add new commands, add options to existing
|
|
commands, change the default behavior of commands, or implement hooks.
|
|
|
|
To enable the "foo" extension, either shipped with Mercurial or in the
|
|
Python search path, create an entry for it in your configuration file,
|
|
like this:
|
|
|
|
[extensions]
|
|
foo =
|
|
|
|
You may also specify the full path to an extension:
|
|
|
|
[extensions]
|
|
myfeature = ~/.hgext/myfeature.py
|
|
|
|
See 'hg help config' for more information on configuration files.
|
|
|
|
Extensions are not loaded by default for a variety of reasons: they can
|
|
increase startup overhead; they may be meant for advanced usage only; they
|
|
may provide potentially dangerous abilities (such as letting you destroy
|
|
or modify history); they might not be ready for prime time; or they may
|
|
alter some usual behaviors of stock Mercurial. It is thus up to the user
|
|
to activate extensions as needed.
|
|
|
|
To explicitly disable an extension enabled in a configuration file of
|
|
broader scope, prepend its path with !:
|
|
|
|
[extensions]
|
|
# disabling extension bar residing in /path/to/extension/bar.py
|
|
bar = !/path/to/extension/bar.py
|
|
# ditto, but no path was supplied for extension baz
|
|
baz = !
|
|
|
|
Enabled extensions:
|
|
|
|
conflictinfo
|
|
debugshell a python shell with repo, changelog & manifest objects
|
|
errorredirect
|
|
redirect error message
|
|
githelp try mapping git commands to Mercurial commands
|
|
mergedriver custom merge drivers for autoresolved files
|
|
progressfile allows users to have JSON progress bar information written
|
|
to a path
|
|
rebase command to move sets of revisions to a different ancestor
|
|
eden accelerated hg functionality in Eden checkouts (eden !)
|
|
sampling (no help text available)
|
|
treemanifest
|
|
|
|
Disabled extensions:
|
|
|
|
absorb apply working directory changes to changesets
|
|
amend extends the existing commit amend functionality
|
|
arcdiff (no help text available)
|
|
blackbox log repository events to a blackbox for debugging
|
|
catnotate (no help text available)
|
|
checkmessagehook
|
|
(no help text available)
|
|
checkserverbookmark
|
|
(no help text available)
|
|
chistedit
|
|
churn command to display statistics about repository history
|
|
cleanobsstore
|
|
clienttelemetry
|
|
provide information about the client in server telemetry
|
|
clindex (no help text available)
|
|
clonebundles advertise pre-generated bundles to seed clones
|
|
commitcloud back up and sync changesets via the cloud
|
|
convert import revisions from foreign VCS repositories into
|
|
Mercurial
|
|
copytrace extension that does copytracing fast
|
|
crdump (no help text available)
|
|
debugcommitmessage
|
|
(no help text available)
|
|
dialect replace terms with more widely used equivalents
|
|
directaccess This extension provides direct access
|
|
dirsync
|
|
disablesymlinks
|
|
disables symlink support when enabled
|
|
drop drop specified changeset from the stack
|
|
edrecord (no help text available)
|
|
eol automatically manage newlines in repository files
|
|
extdiff command to allow external programs to compare revisions
|
|
extorder
|
|
extutil (no help text available)
|
|
fastannotate yet another annotate implementation that might be faster
|
|
fastlog
|
|
fbhistedit extends the existing histedit functionality
|
|
fbscmquery (no help text available)
|
|
fixcorrupt (no help text available)
|
|
generic_bisect
|
|
(no help text available)
|
|
gitlookup extension that will look up hashes from an hg-git map file
|
|
over the wire.
|
|
gitrevset map a git hash to a Mercurial hash:
|
|
globalrevs extension for providing strictly increasing revision
|
|
numbers
|
|
gpg commands to sign and verify changesets
|
|
grepdiff (no help text available)
|
|
grpcheck check if the user is in specified groups
|
|
hgevents publishes state-enter and state-leave events to Watchman
|
|
hggit push and pull from a Git server
|
|
hgsql sync hg repos with MySQL
|
|
hiddenerror configurable error messages for accessing hidden changesets
|
|
highlight syntax highlighting for hgweb (requires Pygments)
|
|
histedit interactive history editing
|
|
infinitepush store draft commits in the cloud
|
|
infinitepushbackup
|
|
back up draft commits in the cloud
|
|
interactiveui
|
|
(no help text available)
|
|
linkrevcache a simple caching layer to speed up _adjustlinkrev
|
|
logginghelper
|
|
this extension logs different pieces of information that
|
|
will be used
|
|
lz4revlog store revlog deltas using lz4 compression
|
|
memcommit make commits without a working copy
|
|
morestatus make status give a bit more context
|
|
myparent
|
|
ownercheck prevent operations on repos not owned by the current user
|
|
patchrmdir (no help text available)
|
|
perfsuite (no help text available)
|
|
phabdiff (no help text available)
|
|
phabstatus (no help text available)
|
|
phrevset provides support for Phabricator revsets
|
|
pullcreatemarkers
|
|
pushrebase rebases commits during push
|
|
rage upload useful diagnostics and give instructions for asking
|
|
for help
|
|
remotefilelog
|
|
minimize and speed up large repositories
|
|
remotenames mercurial extension for improving client/server workflows
|
|
repogenerator
|
|
(no help text available)
|
|
reset reset the active bookmark and working copy to a desired
|
|
revision
|
|
schemes extend schemes with shortcuts to repository swarms
|
|
sendunbundlereplay
|
|
(no help text available)
|
|
share share a common history between several working directories
|
|
shelve save and restore changes to the working directory
|
|
sigtrace sigtrace - dump stack and memory traces on signal
|
|
simplecache
|
|
smartlog command to display a relevant subgraph
|
|
snapshot extension to snapshot the working copy
|
|
sparse allow sparse checkouts of the working directory
|
|
sshaskpass ssh-askpass implementation that works with chg
|
|
stablerev provide a way to expose the "stable" commit via a revset
|
|
stat (no help text available)
|
|
traceprof (no help text available)
|
|
tweakdefaults
|
|
user friendly defaults
|
|
undo (no help text available)
|
|
whereami (no help text available)
|
|
win32mbcs allow the use of MBCS paths with problematic encodings
|
|
|
|
|
|
|
|
Verify that extension keywords appear in help templates
|
|
|
|
$ hg help --config extensions.phabdiff= templating|grep phabdiff > /dev/null
|
|
|
|
Normal help for add
|
|
|
|
$ hg add -h
|
|
hg add [OPTION]... [FILE]...
|
|
|
|
start tracking the specified files
|
|
|
|
Specify files to be tracked by Mercurial. The files will be added to the
|
|
repository at the next commit.
|
|
|
|
To undo an add before files have been committed, use 'hg forget'. To undo
|
|
an add after files have been committed, use 'hg rm'.
|
|
|
|
If no names are given, add all files to the repository (except files
|
|
matching ".hgignore").
|
|
|
|
Returns 0 if all files are successfully added.
|
|
|
|
Options ([+] can be repeated):
|
|
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
|
-n --dry-run do not perform actions, just print output
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
Verbose help for add
|
|
|
|
$ hg add -hv
|
|
hg add [OPTION]... [FILE]...
|
|
|
|
start tracking the specified files
|
|
|
|
Specify files to be tracked by Mercurial. The files will be added to the
|
|
repository at the next commit.
|
|
|
|
To undo an add before files have been committed, use 'hg forget'. To undo
|
|
an add after files have been committed, use 'hg rm'.
|
|
|
|
If no names are given, add all files to the repository (except files
|
|
matching ".hgignore").
|
|
|
|
Examples:
|
|
|
|
- New (unknown) files are added automatically by 'hg add':
|
|
|
|
$ ls
|
|
foo.c
|
|
$ hg status
|
|
? foo.c
|
|
$ hg add
|
|
adding foo.c
|
|
$ hg status
|
|
A foo.c
|
|
|
|
- Specific files to be added can be specified:
|
|
|
|
$ ls
|
|
bar.c foo.c
|
|
$ hg status
|
|
? bar.c
|
|
? foo.c
|
|
$ hg add bar.c
|
|
$ hg status
|
|
A bar.c
|
|
? foo.c
|
|
|
|
Returns 0 if all files are successfully added.
|
|
|
|
Options ([+] can be repeated):
|
|
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
|
-n --dry-run do not perform actions, just print output
|
|
|
|
Global options ([+] can be repeated):
|
|
|
|
-R --repository REPO repository root directory or name of overlay
|
|
bundle file
|
|
--cwd DIR change working directory
|
|
-y --noninteractive do not prompt, automatically pick the first choice
|
|
for all prompts
|
|
-q --quiet suppress output
|
|
-v --verbose enable additional output
|
|
--color TYPE when to colorize (boolean, always, auto, never, or
|
|
debug)
|
|
--config CONFIG [+] set/override config option (use
|
|
'section.name=value')
|
|
--configfile FILE [+] enables the given config file
|
|
--debug enable debugging output
|
|
--debugger start debugger
|
|
--encoding ENCODE set the charset encoding (default: utf-8)
|
|
--encodingmode MODE set the charset encoding mode (default: strict)
|
|
--outputencoding ENCODE set the output encoding (default: utf-8)
|
|
--traceback always print a traceback on exception
|
|
--time time how long the command takes
|
|
--profile print command execution profile
|
|
--version output version information and exit
|
|
-h --help display help and exit
|
|
--hidden consider hidden changesets
|
|
--pager TYPE when to paginate (boolean, always, auto, or never)
|
|
(default: auto)
|
|
|
|
Test the textwidth config option
|
|
|
|
$ hg root -h --config ui.textwidth=50
|
|
hg root
|
|
|
|
print the root (top) of the current working
|
|
directory
|
|
|
|
Print the root directory of the current
|
|
repository.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options:
|
|
|
|
--shared show root of the shared repo
|
|
|
|
(some details hidden, use --verbose to show
|
|
complete help)
|
|
Test help on a self-referencing alias that is a rust command
|
|
|
|
$ hg --config "alias.root=root --shared" help root
|
|
alias for: root --shared
|
|
|
|
hg root
|
|
|
|
print the root (top) of the current working directory
|
|
|
|
Print the root directory of the current repository.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options:
|
|
|
|
--shared show root of the shared repo
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
$ hg --config "alias.root=root --shared" root -h
|
|
alias for: root --shared
|
|
|
|
hg root
|
|
|
|
print the root (top) of the current working directory
|
|
|
|
Print the root directory of the current repository.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options:
|
|
|
|
--shared show root of the shared repo
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
Test help option with version option
|
|
|
|
$ hg add -h --version
|
|
Mercurial Distributed SCM (version *) (glob)
|
|
(see https://mercurial-scm.org for more information)
|
|
|
|
Copyright (C) 2005-* Matt Mackall and others (glob)
|
|
This is free software; see the source for copying conditions. There is NO
|
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
$ hg add --skjdfks
|
|
hg add: option --skjdfks not recognized
|
|
(use 'hg add -h' to get help)
|
|
[255]
|
|
|
|
Test ambiguous command help
|
|
|
|
$ hg help ad
|
|
abort: no such help topic: ad
|
|
(try 'hg help --keyword ad')
|
|
[255]
|
|
|
|
Test command without options
|
|
|
|
$ hg help verify
|
|
hg verify
|
|
|
|
verify the integrity of the repository
|
|
|
|
Verify the integrity of the current repository.
|
|
|
|
This will perform an extensive check of the repository's integrity,
|
|
validating the hashes and checksums of each entry in the changelog,
|
|
manifest, and tracked files, as well as the integrity of their crosslinks
|
|
and indices.
|
|
|
|
Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
|
|
information about recovery from corruption of the repository.
|
|
|
|
Returns 0 on success, 1 if errors are encountered.
|
|
|
|
Manifest verification can be extremely slow on large repos, so it can be
|
|
disabled if "verify.skipmanifests" is True:
|
|
|
|
[verify]
|
|
skipmanifests = true
|
|
|
|
Options ([+] can be repeated):
|
|
|
|
-r --rev REV [+] verify the specified revision or revset
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg help diff
|
|
hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
|
|
|
|
aliases: d
|
|
|
|
show differences between commits
|
|
|
|
Show the differences between two commits. If only one commit is specified,
|
|
shows the differences between the specified commit and your pending
|
|
changes. If no commits are specified, shows your pending changes.
|
|
|
|
Specify -c to see the changes in the specified commit relative to its
|
|
parent.
|
|
|
|
By default, this command skips binary files. To override this behavior,
|
|
specify -a to include binary files in the diff, probably with undesirable
|
|
results.
|
|
|
|
By default, diffs are shown using the unified diff format. Specify -g to
|
|
generate diffs in the git extended diff format. For more information, read
|
|
'hg help diffs'.
|
|
|
|
Note:
|
|
'hg diff' might generate unexpected results during merges because it
|
|
defaults to comparing against your checkout's first parent commit if no
|
|
commits are specified.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options ([+] can be repeated):
|
|
|
|
-r --rev REV [+] revision
|
|
-c --change REV change made by revision
|
|
-a --text treat all files as text
|
|
-g --git use git extended diff format
|
|
--binary generate binary diffs in git mode (default)
|
|
--nodates omit dates from diff headers
|
|
--noprefix omit a/ and b/ prefixes from filenames
|
|
-p --show-function show which function each change is in
|
|
--reverse produce a diff that undoes the changes
|
|
-w --ignore-all-space ignore white space when comparing lines
|
|
-b --ignore-space-change ignore changes in the amount of white space
|
|
-B --ignore-blank-lines ignore changes whose lines are all blank
|
|
-Z --ignore-space-at-eol ignore changes in whitespace at EOL
|
|
-U --unified NUM number of lines of context to show
|
|
--stat output diffstat-style summary of changes
|
|
--root DIR produce diffs relative to subdirectory
|
|
--only-files-in-revs only show changes for files modified in the
|
|
requested revisions
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg help status
|
|
hg status [OPTION]... [FILE]...
|
|
|
|
aliases: st
|
|
|
|
list files with pending changes
|
|
|
|
Show status of files in the repository using the following status
|
|
indicators:
|
|
|
|
M = modified
|
|
A = added
|
|
R = removed
|
|
C = clean
|
|
! = missing (deleted by a non-hg command, but still tracked)
|
|
? = not tracked
|
|
I = ignored
|
|
= origin of the previous file (with --copies)
|
|
|
|
By default, shows files that have been modified, added, removed, deleted,
|
|
or that are unknown (corresponding to the options -mardu). Files that are
|
|
unmodified, ignored, or the source of a copy/move operation are not
|
|
listed.
|
|
|
|
To control the exact statuses that are shown, specify the relevant flags
|
|
(like -rd to show only files that are removed or deleted). Additionally,
|
|
specify -q/--quiet to hide both unknown and ignored files.
|
|
|
|
To show the status of specific files, provide an explicit list of files to
|
|
match. To include or exclude files using regular expressions, use -I or
|
|
-X.
|
|
|
|
If --rev is specified, and only one revision is given, it is used as the
|
|
base revision. If two 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.
|
|
|
|
Note:
|
|
'hg status' might appear to disagree with 'hg diff' if permissions have
|
|
changed or a merge has occurred, because the standard diff format does
|
|
not report permission changes and 'hg diff' only reports changes
|
|
relative to one merge parent.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options ([+] can be repeated):
|
|
|
|
-A --all show status of all files
|
|
-m --modified show only modified files
|
|
-a --added show only added files
|
|
-r --removed show only removed files
|
|
-d --deleted show only deleted (but tracked) files
|
|
-c --clean show only files without changes
|
|
-u --unknown show only unknown (not tracked) files
|
|
-i --ignored show only ignored files
|
|
-n --no-status hide status prefix
|
|
-C --copies show source of copied files
|
|
-0 --print0 end filenames with NUL, for use with xargs
|
|
--rev REV [+] show difference from revision
|
|
--change REV list the changed files of a revision
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg -q help status
|
|
hg status [OPTION]... [FILE]...
|
|
|
|
list files with pending changes
|
|
|
|
$ hg help foo
|
|
abort: no such help topic: foo
|
|
(try 'hg help --keyword foo')
|
|
[255]
|
|
|
|
$ hg skjdfks
|
|
unknown command 'skjdfks'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
Typoed command gives suggestion
|
|
$ hg puls
|
|
unknown command 'puls'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
Not enabled extension gets suggested
|
|
|
|
$ hg rebase
|
|
unknown command 'rebase'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
Disabled extension gets suggested
|
|
$ hg --config extensions.rebase=! rebase
|
|
unknown command 'rebase'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
Make sure that we don't run afoul of the help system thinking that
|
|
this is a section and erroring out weirdly.
|
|
|
|
$ hg .log
|
|
unknown command '.log'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
$ hg log.
|
|
unknown command 'log.'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
$ hg pu.lh
|
|
unknown command 'pu.lh'
|
|
(use 'hg help' to get help)
|
|
[255]
|
|
|
|
$ cat > helpext.py <<EOF
|
|
> import os
|
|
> from edenscm.mercurial import commands, registrar
|
|
>
|
|
> cmdtable = {}
|
|
> command = registrar.command(cmdtable)
|
|
>
|
|
> @command('nohelp',
|
|
> [(b'', b'longdesc', 3, b'x'*90),
|
|
> (b'n', b'', None, b'normal desc'),
|
|
> (b'', b'newline', b'', b'line1\nline2')],
|
|
> b'hg nohelp',
|
|
> norepo=True)
|
|
> @command('debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
|
|
> @command('debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
|
|
> @command('debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
|
|
> def nohelp(ui, *args, **kwargs):
|
|
> pass
|
|
>
|
|
> def uisetup(ui):
|
|
>
|
|
> ui.setconfig('alias', 'shellalias', '!echo hi', 'helpext')
|
|
> ui.setconfig('alias', 'hgalias', 'summary', 'helpext')
|
|
> EOF
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
$ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
|
|
|
|
Test for aliases
|
|
|
|
$ hg help hgalias
|
|
alias for: summary
|
|
|
|
hg summary [--remote]
|
|
|
|
aliases: su
|
|
|
|
summarize working directory state
|
|
|
|
This generates a brief summary of the working directory state, including
|
|
parents, branch, commit status, phase and available updates.
|
|
|
|
With the --remote option, this will check the default paths for incoming
|
|
and outgoing changes. This can be time-consuming.
|
|
|
|
Returns 0 on success.
|
|
|
|
Options:
|
|
|
|
--remote check for push and pull
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg help shellalias
|
|
alias for: debugrunshell --cmd=echo hi
|
|
|
|
hg debugrunshell
|
|
|
|
run a shell command
|
|
|
|
Options:
|
|
|
|
--cmd VALUE command to run
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
Test command with no help text
|
|
|
|
$ hg help nohelp
|
|
hg nohelp
|
|
|
|
(no help text available)
|
|
|
|
Options:
|
|
|
|
--longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
|
|
-n -- normal desc
|
|
--newline VALUE line1 line2
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg help -k nohelp
|
|
Commands:
|
|
|
|
nohelp hg nohelp
|
|
|
|
Extension Commands:
|
|
|
|
nohelp (no help text available)
|
|
|
|
Commands in disabled extensions gets suggested even if there is no help text
|
|
for the module itself.
|
|
|
|
$ hg help --config 'extensions.helpext=!'`pwd`/helpext.py nohelp
|
|
'nohelp' is provided by the following extension:
|
|
|
|
helpext (no help text available)
|
|
|
|
(use 'hg help extensions' for information on enabling extensions)
|
|
|
|
Test that default list of commands omits extension commands
|
|
|
|
$ hg help
|
|
Mercurial Distributed SCM
|
|
|
|
hg COMMAND [OPTIONS]
|
|
|
|
These are some common Mercurial commands. Use 'hg help commands' to list all
|
|
commands, and 'hg help COMMAND' to get help on a specific command.
|
|
|
|
Get the latest commits from the server:
|
|
|
|
pull pull changes from the specified source
|
|
|
|
View commits:
|
|
|
|
show show commit in detail
|
|
diff show differences between commits
|
|
|
|
Check out a commit:
|
|
|
|
checkout check out a specific commit
|
|
|
|
Work with your checkout:
|
|
|
|
status list files with pending changes
|
|
add start tracking the specified files
|
|
remove delete the specified tracked files
|
|
forget stop tracking the specified files
|
|
revert change the specified files to match a commit
|
|
purge delete untracked files
|
|
|
|
Commit changes and modify commits:
|
|
|
|
commit save all pending changes or specified files in a new commit
|
|
|
|
Rearrange commits:
|
|
|
|
graft copy commits from a different location
|
|
|
|
Undo changes:
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
Other commands:
|
|
|
|
config show config settings
|
|
grep search for a pattern in tracked files in the working directory
|
|
|
|
Additional help topics:
|
|
|
|
filesets specifying files by their characteristics
|
|
glossary common terms
|
|
patterns specifying files by file name pattern
|
|
revisions specifying commits
|
|
templating customizing output with templates
|
|
|
|
|
|
Test list of internal help commands
|
|
|
|
$ hg help debug
|
|
Debug commands (internal and unsupported):
|
|
|
|
debug-args print arguments received
|
|
debugancestor
|
|
find the ancestor revision of two revisions in a given index
|
|
debugapplystreamclonebundle
|
|
apply a stream clone bundle file
|
|
debugbindag serialize dag to a compat binary format
|
|
debugbuilddag
|
|
builds a repo with a given DAG from scratch in the current
|
|
empty repo
|
|
debugbundle lists the contents of a bundle
|
|
debugcapabilities
|
|
lists the capabilities of a remote peer
|
|
debugcheckcasecollisions
|
|
check for case collisions against a commit
|
|
debugcheckoutidentifier
|
|
display the current checkout unique identifier
|
|
debugcheckstate
|
|
validate the correctness of the current dirstate
|
|
debugcolor show available color, effects or style
|
|
debugcommands
|
|
list all available commands and options
|
|
debugcomplete
|
|
returns the completion list associated with the given command
|
|
debugcreatestreamclonebundle
|
|
create a stream clone bundle file
|
|
debugdag format the changelog or an index DAG as a concise textual
|
|
description
|
|
debugdata dump the contents of a data file revision
|
|
debugdate parse and display a date
|
|
debugdeltachain
|
|
dump information about delta chains in a revlog
|
|
debugdirs list directories
|
|
debugdirstate
|
|
show the contents of the current dirstate
|
|
debugdiscovery
|
|
runs the changeset discovery protocol in isolation
|
|
debugdrawdag read an ASCII graph from stdin and create changesets
|
|
debugedenimporthelper
|
|
Obtain data for edenfs
|
|
debugedenrunpostupdatehook
|
|
Run post-update hooks for edenfs
|
|
debugexistingcasecollisions
|
|
check for existing case collisions in a commit
|
|
debugextensions
|
|
show information about active extensions
|
|
debugfilerevision
|
|
dump internal metadata for given file revisions
|
|
debugfileset parse and apply a fileset specification
|
|
debugformat display format information about the current repository
|
|
debugfsinfo show information detected about current filesystem
|
|
debuggentrees
|
|
(no help text available)
|
|
debuggetbundle
|
|
retrieves a bundle from a repo
|
|
debughttp check whether api server is reachable
|
|
debugignore display the combined ignore pattern and information about
|
|
ignored files
|
|
debugindex dump the contents of an index file
|
|
debugindexdot
|
|
dump an index DAG as a graphviz dot file
|
|
debugindexedlog-dump
|
|
dump indexedlog data
|
|
debugindexedlog-repair
|
|
repair indexedlog log
|
|
debuginstall test Mercurial installation
|
|
debugknown test whether node ids are known to a repo
|
|
debuglocks show or modify state of locks
|
|
debugmanifestdirs
|
|
print treemanifest id, and paths
|
|
debugmergestate
|
|
print merge state
|
|
debugmetalog show changes in commit graph over time
|
|
debugmutation
|
|
display the mutation history (or future) of a commit
|
|
debugmutationfromobsmarkers
|
|
convert obsolescence markers to mutation records
|
|
debugnamecomplete
|
|
complete "names" - tags, open branch names, bookmark names
|
|
debugobsolete
|
|
create arbitrary obsolete marker
|
|
debugoptADV (no help text available)
|
|
debugoptDEP (no help text available)
|
|
debugoptEXP (no help text available)
|
|
debugpathcomplete
|
|
complete part or all of a tracked path
|
|
debugpickmergetool
|
|
examine which merge tool is chosen for specified file
|
|
debugpreviewbindag
|
|
print dag generated by debugbindag
|
|
debugprocesstree
|
|
show process tree related to hg
|
|
debugprogress
|
|
(no help text available)
|
|
debugpushkey access the pushkey key/value protocol
|
|
debugpvec (no help text available)
|
|
debugpython run python interpreter
|
|
debugreadauthforuri
|
|
(no help text available)
|
|
debugrebuilddirstate
|
|
rebuild the dirstate as it would look like for the given
|
|
revision
|
|
debugrebuildfncache
|
|
rebuild the fncache file
|
|
debugrename dump rename information
|
|
debugrevlog show data and statistics about a revlog
|
|
debugrevspec parse and apply a revision specification
|
|
debugrunshell
|
|
run a shell command
|
|
debugsetparents
|
|
manually set the parents of the current working directory
|
|
debugshell (no help text available)
|
|
debugssl test a secure connection to a server
|
|
debugstatus common performance issues for status
|
|
debugstore print information about blobstore
|
|
debugstrip strip commits and all their descendants from the repository
|
|
debugsuccessorssets
|
|
show set of successors for revision
|
|
debugtemplate
|
|
parse and apply a template
|
|
debugtreestate
|
|
manage treestate
|
|
debugupdatecaches
|
|
warm all known caches in the repository
|
|
debugupgraderepo
|
|
upgrade a repository to use different features
|
|
debugvisibility
|
|
control visibility tracking
|
|
debugwalk show how files match on given patterns
|
|
debugwireargs
|
|
(no help text available)
|
|
|
|
Test list of commands with command with no help text
|
|
|
|
$ hg help helpext
|
|
helpext extension - no help text available
|
|
|
|
Commands:
|
|
|
|
nohelp (no help text available)
|
|
|
|
|
|
test advanced, deprecated and experimental options are hidden in command help
|
|
$ hg help debugoptADV
|
|
hg debugoptADV
|
|
|
|
(no help text available)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
$ hg help debugoptDEP
|
|
hg debugoptDEP
|
|
|
|
(no help text available)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
$ hg help debugoptEXP
|
|
hg debugoptEXP
|
|
|
|
(no help text available)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
test advanced, deprecated and experimental options are shown with -v
|
|
$ hg help -v debugoptADV | grep aopt
|
|
--aopt option is (ADVANCED)
|
|
$ hg help -v debugoptDEP | grep dopt
|
|
--dopt option is (DEPRECATED)
|
|
$ hg help -v debugoptEXP | grep eopt
|
|
--eopt option is (EXPERIMENTAL)
|
|
|
|
#if gettext normal-layout
|
|
test deprecated option is hidden with translation with untranslated description
|
|
(use many globy for not failing on changed transaction)
|
|
$ LANGUAGE=sv hg help debugoptDEP
|
|
hg debugoptDEP
|
|
|
|
(*) (glob)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
#endif
|
|
|
|
Test commands that collide with topics (issue4240)
|
|
|
|
$ hg config -hq
|
|
hg config [-u] [NAME]...
|
|
|
|
show config settings
|
|
$ hg showconfig -hq
|
|
hg config [-u] [NAME]...
|
|
|
|
show config settings
|
|
|
|
Test a help topic
|
|
|
|
$ hg help dates
|
|
Date Formats
|
|
""""""""""""
|
|
|
|
Some commands allow the user to specify a date, e.g.:
|
|
|
|
- backout, commit, import, tag: Specify the commit date.
|
|
- log, revert, update: Select revision(s) by date.
|
|
|
|
Many date formats are valid. Here are some examples:
|
|
|
|
- "Wed Dec 6 13:18:29 2006" (local timezone assumed)
|
|
- "Dec 6 13:18 -0600" (year assumed, time offset provided)
|
|
- "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
|
|
- "Dec 6" (midnight)
|
|
- "13:18" (today assumed)
|
|
- "3:39" (3:39AM assumed)
|
|
- "3:39pm" (15:39)
|
|
- "2006-12-06 13:18:29" (ISO 8601 format)
|
|
- "2006-12-6 13:18"
|
|
- "2006-12-6"
|
|
- "12-6"
|
|
- "12/6"
|
|
- "12/6/6" (Dec 6 2006)
|
|
- "today" (midnight)
|
|
- "yesterday" (midnight)
|
|
- "now" - right now
|
|
|
|
Lastly, there is Mercurial's internal format:
|
|
|
|
- "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
|
|
|
|
This is the internal representation format for dates. The first number is
|
|
the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
|
|
is the offset of the local timezone, in seconds west of UTC (negative if
|
|
the timezone is east of UTC).
|
|
|
|
The log command also accepts date ranges:
|
|
|
|
- "<DATE" - at or before a given date/time
|
|
- ">DATE" - on or after a given date/time
|
|
- "DATE to DATE" - a date range, inclusive
|
|
- "-DAYS" - within a given number of days of today
|
|
|
|
Test repeated config section name
|
|
|
|
$ hg help config.host
|
|
"http_proxy.host"
|
|
Host name and (optional) port of the proxy server, for example
|
|
"myproxy:8000".
|
|
|
|
"smtp.host"
|
|
Host name of mail server, e.g. "mail.example.com".
|
|
|
|
Unrelated trailing paragraphs shouldn't be included
|
|
|
|
$ hg help config.extramsg | grep '^$'
|
|
|
|
|
|
Test capitalized section name
|
|
|
|
$ hg help scripting.HGPLAIN > /dev/null
|
|
|
|
Help subsection:
|
|
|
|
$ hg help config.charsets |grep "Email example:" > /dev/null
|
|
[1]
|
|
|
|
Show nested definitions
|
|
("profiling.type"[break]"ls"[break]"stat"[break])
|
|
|
|
$ hg help config.type | egrep '^$'|wc -l
|
|
\s*3 (re)
|
|
|
|
Separate sections from subsections
|
|
|
|
$ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
|
|
"format"
|
|
--------
|
|
|
|
"usegeneraldelta"
|
|
|
|
"dotencode"
|
|
|
|
"usefncache"
|
|
|
|
"usestore"
|
|
|
|
"use-zstore-commit-data"
|
|
|
|
"use-zstore-commit-data-revlog-fallback"
|
|
|
|
"use-zstore-commit-data-server-fallback"
|
|
|
|
"dirstate"
|
|
|
|
"uselz4"
|
|
|
|
"cgdeltabase"
|
|
|
|
"profiling"
|
|
-----------
|
|
|
|
"format"
|
|
|
|
"progress"
|
|
----------
|
|
|
|
"format"
|
|
|
|
|
|
Last item in help config.*:
|
|
|
|
$ hg help config.`hg help config|grep '^ "'| \
|
|
> tail -1|sed 's![ "]*!!g'`| \
|
|
> grep 'hg help -c config' > /dev/null
|
|
[1]
|
|
|
|
note to use help -c for general hg help config:
|
|
|
|
$ hg help config |grep 'hg help -c config' > /dev/null
|
|
|
|
Test templating help
|
|
|
|
$ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
|
|
desc String. The text of the changeset description.
|
|
diffstat String. Statistics of changes with the following format:
|
|
firstline Any text. Returns the first line of text.
|
|
nonempty Any text. Returns '(none)' if the string is empty.
|
|
|
|
Test deprecated items
|
|
|
|
$ hg help -v templating | grep currentbookmark
|
|
currentbookmark
|
|
$ hg help templating | (grep currentbookmark || true)
|
|
|
|
Test help hooks
|
|
|
|
$ cat > helphook1.py <<EOF
|
|
> from edenscm.mercurial import help
|
|
>
|
|
> def rewrite(ui, topic, doc):
|
|
> return doc + '\nhelphook1\n'
|
|
>
|
|
> def extsetup(ui):
|
|
> help.addtopichook('revisions', rewrite)
|
|
> EOF
|
|
$ cat > helphook2.py <<EOF
|
|
> from edenscm.mercurial import help
|
|
>
|
|
> def rewrite(ui, topic, doc):
|
|
> return doc + '\nhelphook2\n'
|
|
>
|
|
> def extsetup(ui):
|
|
> help.addtopichook('revisions', rewrite)
|
|
> EOF
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
$ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
|
|
$ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
|
|
$ hg help revsets | grep helphook
|
|
helphook1
|
|
helphook2
|
|
|
|
help -c should only show debug --debug
|
|
|
|
$ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
|
|
[1]
|
|
|
|
help -c should only show deprecated for -v
|
|
|
|
$ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
|
|
[1]
|
|
|
|
Test -s / --system
|
|
|
|
$ hg help config.files -s windows |grep 'etc/mercurial' | \
|
|
> wc -l | sed -e 's/ //g'
|
|
0
|
|
$ hg help config.files --system unix | grep 'USER' | \
|
|
> wc -l | sed -e 's/ //g'
|
|
0
|
|
|
|
Test -e / -c / -k combinations
|
|
|
|
$ hg help -c|egrep '^[A-Z].*:|^ debug'
|
|
Commands:
|
|
$ hg help -e|egrep '^[A-Z].*:|^ debug'
|
|
Extensions:
|
|
debugcommitmessage (no help text available)
|
|
debugshell a python shell with repo, changelog & manifest objects
|
|
$ hg help -k|egrep '^[A-Z].*:|^ debug'
|
|
Topics:
|
|
Commands:
|
|
Extensions:
|
|
debugcommitmessage (no help text available)
|
|
debugshell a python shell with repo, changelog & manifest objects
|
|
Extension Commands:
|
|
$ hg help -c schemes
|
|
abort: no such help topic: schemes
|
|
(try 'hg help --keyword schemes')
|
|
[255]
|
|
$ hg help -e schemes |head -1
|
|
schemes extension - extend schemes with shortcuts to repository swarms
|
|
$ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
|
|
Commands:
|
|
$ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
|
|
Extensions:
|
|
$ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
|
|
Commands:
|
|
$ hg help -c commit > /dev/null
|
|
$ hg help -e -c commit > /dev/null
|
|
$ hg help -e commit > /dev/null
|
|
abort: no such help topic: commit
|
|
(try 'hg help --keyword commit')
|
|
[255]
|
|
|
|
Test keyword search help
|
|
|
|
$ cat > prefixedname.py <<EOF
|
|
> '''matched against word "clone"
|
|
> '''
|
|
> EOF
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
$ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
|
|
$ hg help -k clone
|
|
Topics:
|
|
|
|
config Configuration Files
|
|
extensions Using Additional Features
|
|
glossary Common Terms
|
|
phases Working with Phases
|
|
urls URL Paths
|
|
|
|
Commands:
|
|
|
|
bookmarks create a new bookmark or list existing bookmarks
|
|
clone make a copy of an existing repository
|
|
paths show aliases for remote repositories
|
|
|
|
Extensions:
|
|
|
|
clonebundles advertise pre-generated bundles to seed clones
|
|
prefixedname matched against word "clone"
|
|
|
|
Test unfound topic
|
|
|
|
$ hg help nonexistingtopicthatwillneverexisteverever
|
|
abort: no such help topic: nonexistingtopicthatwillneverexisteverever
|
|
(try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
|
|
[255]
|
|
|
|
Test unfound keyword
|
|
|
|
$ hg help --keyword nonexistingwordthatwillneverexisteverever
|
|
abort: no matches
|
|
(try 'hg help' for a list of topics)
|
|
[255]
|
|
|
|
Test omit indicating for help
|
|
|
|
$ cat > addverboseitems.py <<EOF
|
|
> '''extension to test omit indicating.
|
|
>
|
|
> This paragraph is never omitted (for extension)
|
|
>
|
|
> .. container:: verbose
|
|
>
|
|
> This paragraph is omitted,
|
|
> if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
|
|
>
|
|
> This paragraph is never omitted, too (for extension)
|
|
> '''
|
|
> from __future__ import absolute_import
|
|
> from edenscm.mercurial import commands, help
|
|
> testtopic = """This paragraph is never omitted (for topic).
|
|
>
|
|
> .. container:: verbose
|
|
>
|
|
> This paragraph is omitted,
|
|
> if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
|
|
>
|
|
> This paragraph is never omitted, too (for topic)
|
|
> """
|
|
> def extsetup(ui):
|
|
> help.helptable.append((["topic-containing-verbose"],
|
|
> "This is the topic to test omit indicating.",
|
|
> lambda ui: testtopic))
|
|
> EOF
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
$ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
|
|
$ hg help addverboseitems
|
|
addverboseitems extension - extension to test omit indicating.
|
|
|
|
This paragraph is never omitted (for extension)
|
|
|
|
This paragraph is never omitted, too (for extension)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
no commands defined
|
|
$ hg help -v addverboseitems
|
|
addverboseitems extension - extension to test omit indicating.
|
|
|
|
This paragraph is never omitted (for extension)
|
|
|
|
This paragraph is omitted, if 'hg help' is invoked without "-v" (for
|
|
extension)
|
|
|
|
This paragraph is never omitted, too (for extension)
|
|
|
|
no commands defined
|
|
$ hg help topic-containing-verbose
|
|
This is the topic to test omit indicating.
|
|
""""""""""""""""""""""""""""""""""""""""""
|
|
|
|
This paragraph is never omitted (for topic).
|
|
|
|
This paragraph is never omitted, too (for topic)
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
$ hg help -v topic-containing-verbose
|
|
This is the topic to test omit indicating.
|
|
""""""""""""""""""""""""""""""""""""""""""
|
|
|
|
This paragraph is never omitted (for topic).
|
|
|
|
This paragraph is omitted, if 'hg help' is invoked without "-v" (for
|
|
topic)
|
|
|
|
This paragraph is never omitted, too (for topic)
|
|
|
|
Test section lookup
|
|
|
|
$ hg help revset.merge
|
|
"merge()"
|
|
Changeset is a merge changeset.
|
|
|
|
$ hg help glossary.dag
|
|
DAG
|
|
The repository of changesets of a distributed version control system
|
|
(DVCS) can be described as a directed acyclic graph (DAG), consisting
|
|
of nodes and edges, where nodes correspond to changesets and edges
|
|
imply a parent -> child relation. This graph can be visualized by
|
|
graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
|
|
limited by the requirement for children to have at most two parents.
|
|
|
|
|
|
$ hg help hgrc.paths
|
|
"paths"
|
|
-------
|
|
|
|
Assigns symbolic names and behavior to repositories.
|
|
|
|
Options are symbolic names defining the URL or directory that is the
|
|
location of the repository. Example:
|
|
|
|
[paths]
|
|
my_server = https://example.com/my_repo
|
|
local_path = /home/me/repo
|
|
|
|
These symbolic names can be used from the command line. To pull from
|
|
"my_server": 'hg pull my_server'. To push to "local_path": 'hg push
|
|
local_path'.
|
|
|
|
Options containing colons (":") denote sub-options that can influence
|
|
behavior for that specific path. Example:
|
|
|
|
[paths]
|
|
my_server = https://example.com/my_path
|
|
my_server:pushurl = ssh://example.com/my_path
|
|
|
|
The following sub-options can be defined:
|
|
|
|
"pushurl"
|
|
The URL to use for push operations. If not defined, the location
|
|
defined by the path's main entry is used.
|
|
|
|
"pushrev"
|
|
A revset defining which revisions to push by default.
|
|
|
|
When 'hg push' is executed without a "-r" argument, the revset defined
|
|
by this sub-option is evaluated to determine what to push.
|
|
|
|
For example, a value of "." will push the working directory's revision
|
|
by default.
|
|
|
|
Revsets specifying bookmarks will not result in the bookmark being
|
|
pushed.
|
|
|
|
The following special named paths exist:
|
|
|
|
"default"
|
|
The URL or directory to use when no source or remote is specified.
|
|
|
|
'hg clone' will automatically define this path to the location the
|
|
repository was cloned from.
|
|
|
|
"default-push"
|
|
(deprecated) The URL or directory for the default 'hg push' location.
|
|
"default:pushurl" should be used instead.
|
|
|
|
$ hg help glossary.mcguffin
|
|
abort: help section not found: glossary.mcguffin
|
|
[255]
|
|
|
|
$ hg help glossary.mc.guffin
|
|
abort: help section not found: glossary.mc.guffin
|
|
[255]
|
|
|
|
$ hg help template.files
|
|
files List of strings. All files modified, added, or removed by
|
|
this changeset.
|
|
files(pattern)
|
|
All files of the current changeset matching the pattern. See
|
|
'hg help patterns'.
|
|
|
|
Test section lookup by translated message
|
|
|
|
str.lower() instead of encoding.lower(str) on translated message might
|
|
make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
|
|
as the second or later byte of multi-byte character.
|
|
|
|
For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
|
|
contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
|
|
replacement makes message meaningless.
|
|
|
|
This tests that section lookup by translated string isn't broken by
|
|
such str.lower().
|
|
|
|
$ $PYTHON <<EOF
|
|
> def escape(s):
|
|
> return ''.join('\\\u%x' % ord(uc) for uc in s.decode('cp932'))
|
|
> # translation of "record" in ja_JP.cp932
|
|
> upper = b"\x8bL\x98^"
|
|
> # str.lower()-ed section name should be treated as different one
|
|
> lower = b"\x8bl\x98^"
|
|
> with open('ambiguous.py', 'w') as fp:
|
|
> fp.write("""# ambiguous section names in ja_JP.cp932
|
|
> u'''summary of extension
|
|
>
|
|
> %s
|
|
> ----
|
|
>
|
|
> Upper name should show only this message
|
|
>
|
|
> %s
|
|
> ----
|
|
>
|
|
> Lower name should show only this message
|
|
>
|
|
> subsequent section
|
|
> ------------------
|
|
>
|
|
> This should be hidden at 'hg help ambiguous' with section name.
|
|
> '''
|
|
> """ % (escape(upper), escape(lower)))
|
|
> EOF
|
|
|
|
Show help content of disabled extensions
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> ambiguous = !./ambiguous.py
|
|
> EOF
|
|
$ hg help -e ambiguous
|
|
ambiguous extension - (no help text available)
|
|
|
|
(use 'hg help extensions' for information on enabling extensions)
|
|
|
|
Test dynamic list of merge tools only shows up once
|
|
$ hg help merge-tools
|
|
Merge Tools
|
|
"""""""""""
|
|
|
|
To merge files Mercurial uses merge tools.
|
|
|
|
A merge tool combines two different versions of a file into a merged file.
|
|
Merge tools are given the two files and the greatest common ancestor of
|
|
the two file versions, so they can determine the changes made on both
|
|
branches.
|
|
|
|
Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
|
|
backout' and in several extensions.
|
|
|
|
Usually, the merge tool tries to automatically reconcile the files by
|
|
combining all non-overlapping changes that occurred separately in the two
|
|
different evolutions of the same initial base file. Furthermore, some
|
|
interactive merge programs make it easier to manually resolve conflicting
|
|
merges, either in a graphical way, or by inserting some conflict markers.
|
|
Mercurial does not include any interactive merge programs but relies on
|
|
external tools for that.
|
|
|
|
Available merge tools
|
|
=====================
|
|
|
|
External merge tools and their properties are configured in the merge-
|
|
tools configuration section - see hgrc(5) - but they can often just be
|
|
named by their executable.
|
|
|
|
A merge tool is generally usable if its executable can be found on the
|
|
system and if it can handle the merge. The executable is found if it is an
|
|
absolute or relative executable path or the name of an application in the
|
|
executable search path. The tool is assumed to be able to handle the merge
|
|
if it can handle symlinks if the file is a symlink, if it can handle
|
|
binary files if the file is binary, and if a GUI is available if the tool
|
|
requires a GUI.
|
|
|
|
There are some internal merge tools which can be used. The internal merge
|
|
tools are:
|
|
|
|
":dump"
|
|
Creates three versions of the files to merge, containing the contents of
|
|
local, other and base. These files can then be used to perform a merge
|
|
manually. If the file to be merged is named "a.txt", these files will
|
|
accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
|
|
they will be placed in the same directory as "a.txt".
|
|
|
|
This implies premerge. Therefore, files aren't dumped, if premerge runs
|
|
successfully. Use :forcedump to forcibly write files out.
|
|
|
|
":fail"
|
|
Rather than attempting to merge files that were modified on both
|
|
branches, it marks them as unresolved. The resolve command must be used
|
|
to resolve these conflicts.
|
|
|
|
":forcedump"
|
|
Creates three versions of the files as same as :dump, but omits
|
|
premerge.
|
|
|
|
":local"
|
|
Uses the local 'p1()' version of files as the merged version.
|
|
|
|
":merge"
|
|
Uses the internal non-interactive simple merge algorithm for merging
|
|
files. It will fail if there are any conflicts and leave markers in the
|
|
partially merged file. Markers will have two sections, one for each side
|
|
of merge.
|
|
|
|
":merge-local"
|
|
Like :merge, but resolve all conflicts non-interactively in favor of the
|
|
local 'p1()' changes.
|
|
|
|
":merge-other"
|
|
Like :merge, but resolve all conflicts non-interactively in favor of the
|
|
other 'p2()' changes.
|
|
|
|
":merge3"
|
|
Uses the internal non-interactive simple merge algorithm for merging
|
|
files. It will fail if there are any conflicts and leave markers in the
|
|
partially merged file. Marker will have three sections, one from each
|
|
side of the merge and one for the base content.
|
|
|
|
":other"
|
|
Uses the other 'p2()' version of files as the merged version.
|
|
|
|
":prompt"
|
|
Asks the user which of the local 'p1()' or the other 'p2()' version to
|
|
keep as the merged version.
|
|
|
|
":union"
|
|
Uses the internal non-interactive simple merge algorithm for merging
|
|
files. It will use both left and right sides for conflict regions. No
|
|
markers are inserted.
|
|
|
|
Internal tools are always available and do not require a GUI but will by
|
|
default not handle symlinks or binary files.
|
|
|
|
Choosing a merge tool
|
|
=====================
|
|
|
|
Mercurial uses these rules when deciding which merge tool to use:
|
|
|
|
1. If a tool has been specified with the --tool option to merge or
|
|
resolve, it is used. If it is the name of a tool in the merge-tools
|
|
configuration, its configuration is used. Otherwise the specified tool
|
|
must be executable by the shell.
|
|
2. If the "HGMERGE" environment variable is present, its value is used and
|
|
must be executable by the shell.
|
|
3. If the filename of the file to be merged matches any of the patterns in
|
|
the merge-patterns configuration section, the first usable merge tool
|
|
corresponding to a matching pattern is used. Here, binary capabilities
|
|
of the merge tool are not considered.
|
|
4. If ui.merge is set it will be considered next. If the value is not the
|
|
name of a configured tool, the specified value is used and must be
|
|
executable by the shell. Otherwise the named tool is used if it is
|
|
usable.
|
|
5. If any usable merge tools are present in the merge-tools configuration
|
|
section, the one with the highest priority is used.
|
|
6. If a program named "hgmerge" can be found on the system, it is used -
|
|
but it will by default not be used for symlinks and binary files.
|
|
7. If the file to be merged is not binary and is not a symlink, then
|
|
internal ":merge" is used.
|
|
8. Otherwise, ":prompt" is used.
|
|
|
|
Note:
|
|
After selecting a merge program, Mercurial will by default attempt to
|
|
merge the files using a simple merge algorithm first. Only if it
|
|
doesn't succeed because of conflicting changes will Mercurial actually
|
|
execute the merge program. Whether to use the simple merge algorithm
|
|
first can be controlled by the premerge setting of the merge tool.
|
|
Premerge is enabled by default unless the file is binary or a symlink.
|
|
|
|
See the merge-tools and ui sections of hgrc(5) for details on the
|
|
configuration of merge tools.
|
|
|
|
Compression engines listed in `hg help bundlespec`
|
|
|
|
$ hg help bundlespec | grep gzip
|
|
"v1" bundles can only use the "gzip", "bzip2", and "none" compression
|
|
An algorithm that produces smaller bundles than "gzip".
|
|
This engine will likely produce smaller bundles than "gzip" but will be
|
|
"gzip"
|
|
better compression than "gzip". It also frequently yields better (?)
|
|
|
|
#if normal-layout
|
|
Test usage of section marks in help documents
|
|
|
|
$ cd "$TESTDIR"/../doc
|
|
$ hg debugpython -- check-seclevel.py
|
|
#endif
|