2018-06-15 04:40:53 +03:00
|
|
|
#require no-fsmonitor
|
|
|
|
|
2010-09-18 02:03:08 +04:00
|
|
|
Short help:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg
|
|
|
|
Mercurial Distributed SCM
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
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.
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Get the latest commits from the server:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
pull pull changes from the specified source
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
View commits:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
show show commit in detail
|
|
|
|
diff show differences between commits
|
|
|
|
|
|
|
|
Check out a commit:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
checkout check out a specific commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Work with your checkout:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
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
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Commit changes and modify commits:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
commit save all pending changes or specified files in a new commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Rearrange commits:
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
graft copy commits from a different location
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-30 17:58:06 +03:00
|
|
|
Undo changes:
|
|
|
|
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Other commands:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
config show config settings
|
2018-10-26 00:42:34 +03:00
|
|
|
grep search for a pattern in tracked files in the working directory
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Additional help topics:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
filesets specifying files by their characteristics
|
|
|
|
glossary common terms
|
|
|
|
patterns specifying files by file name pattern
|
|
|
|
revisions specifying commits
|
|
|
|
templating customizing output with templates
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg -q
|
2018-10-15 19:35:15 +03:00
|
|
|
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.
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Get the latest commits from the server:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
pull pull changes from the specified source
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
View commits:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
show show commit in detail
|
|
|
|
diff show differences between commits
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Check out a commit:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
checkout check out a specific commit
|
2018-10-17 19:56:04 +03:00
|
|
|
|
|
|
|
Work with your checkout:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
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
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Commit changes and modify commits:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
commit save all pending changes or specified files in a new commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Rearrange commits:
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
graft copy commits from a different location
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-30 17:58:06 +03:00
|
|
|
Undo changes:
|
|
|
|
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Other commands:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
config show config settings
|
2018-10-26 00:42:34 +03:00
|
|
|
grep search for a pattern in tracked files in the working directory
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Additional help topics:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
filesets specifying files by their characteristics
|
|
|
|
glossary common terms
|
|
|
|
patterns specifying files by file name pattern
|
|
|
|
revisions specifying commits
|
|
|
|
templating customizing output with templates
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg help
|
|
|
|
Mercurial Distributed SCM
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
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.
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Get the latest commits from the server:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
pull pull changes from the specified source
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
View commits:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
show show commit in detail
|
|
|
|
diff show differences between commits
|
|
|
|
|
|
|
|
Check out a commit:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
checkout check out a specific commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Work with your checkout:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
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
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Commit changes and modify commits:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
commit save all pending changes or specified files in a new commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Rearrange commits:
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
graft copy commits from a different location
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-30 17:58:06 +03:00
|
|
|
Undo changes:
|
|
|
|
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Other commands:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
config show config settings
|
2018-10-26 00:42:34 +03:00
|
|
|
grep search for a pattern in tracked files in the working directory
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Additional help topics:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
filesets specifying files by their characteristics
|
|
|
|
glossary common terms
|
|
|
|
patterns specifying files by file name pattern
|
|
|
|
revisions specifying commits
|
|
|
|
templating customizing output with templates
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg -q help
|
2018-10-15 19:35:15 +03:00
|
|
|
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.
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Get the latest commits from the server:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
pull pull changes from the specified source
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
View commits:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
show show commit in detail
|
|
|
|
diff show differences between commits
|
|
|
|
|
|
|
|
Check out a commit:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
checkout check out a specific commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Work with your checkout:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
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
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Commit changes and modify commits:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
commit save all pending changes or specified files in a new commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Rearrange commits:
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
graft copy commits from a different location
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-30 17:58:06 +03:00
|
|
|
Undo changes:
|
|
|
|
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Other commands:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
config show config settings
|
2018-10-26 00:42:34 +03:00
|
|
|
grep search for a pattern in tracked files in the working directory
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Additional help topics:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
filesets specifying files by their characteristics
|
|
|
|
glossary common terms
|
|
|
|
patterns specifying files by file name pattern
|
|
|
|
revisions specifying commits
|
|
|
|
templating customizing output with templates
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2014-02-28 00:37:04 +04:00
|
|
|
Test extension help:
|
2014-03-02 02:20:15 +04:00
|
|
|
$ hg help extensions --config extensions.rebase= --config extensions.children=
|
2014-02-28 00:37:04 +04:00
|
|
|
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
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
See 'hg help config' for more information on configuration files.
|
2014-02-28 00:37:04 +04:00
|
|
|
|
|
|
|
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 = !
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Enabled extensions:
|
2014-02-28 00:37:04 +04:00
|
|
|
|
2018-01-23 23:08:57 +03:00
|
|
|
conflictinfo
|
2018-01-17 23:54:24 +03:00
|
|
|
debugshell a python shell with repo, changelog & manifest objects
|
2018-01-23 23:08:57 +03:00
|
|
|
errorredirect
|
|
|
|
redirect error message
|
2018-01-13 03:58:28 +03:00
|
|
|
githelp try mapping git commands to Mercurial commands
|
2018-01-23 23:08:57 +03:00
|
|
|
mergedriver custom merge drivers for autoresolved files
|
|
|
|
progressfile allows users to have JSON progress bar information written
|
|
|
|
to a path
|
2014-02-28 00:37:04 +04:00
|
|
|
rebase command to move sets of revisions to a different ancestor
|
2019-03-21 08:46:07 +03:00
|
|
|
eden accelerated hg functionality in Eden checkouts (eden !)
|
|
|
|
sampling (no help text available)
|
2019-09-27 00:43:52 +03:00
|
|
|
treemanifest
|
2014-02-28 00:37:04 +04:00
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Disabled extensions:
|
2014-02-28 00:37:04 +04:00
|
|
|
|
2018-01-09 00:57:01 +03:00
|
|
|
absorb apply working directory changes to changesets
|
2018-10-11 16:55:19 +03:00
|
|
|
amend extends the existing commit amend functionality
|
2018-01-09 15:40:31 +03:00
|
|
|
arcdiff (no help text available)
|
2014-02-28 00:37:04 +04:00
|
|
|
blackbox log repository events to a blackbox for debugging
|
2018-01-09 15:40:31 +03:00
|
|
|
catnotate (no help text available)
|
|
|
|
checkmessagehook
|
|
|
|
(no help text available)
|
2019-05-25 02:19:14 +03:00
|
|
|
checkserverbookmark
|
|
|
|
(no help text available)
|
2018-01-09 15:40:31 +03:00
|
|
|
chistedit
|
2014-02-28 00:37:04 +04:00
|
|
|
churn command to display statistics about repository history
|
2018-01-09 15:40:31 +03:00
|
|
|
cleanobsstore
|
2018-03-15 21:00:26 +03:00
|
|
|
clienttelemetry
|
|
|
|
provide information about the client in server telemetry
|
2019-06-20 03:51:19 +03:00
|
|
|
clindex (no help text available)
|
2015-10-17 21:23:54 +03:00
|
|
|
clonebundles advertise pre-generated bundles to seed clones
|
2019-05-20 16:11:59 +03:00
|
|
|
commitcloud back up and sync changesets via the cloud
|
2014-02-28 00:37:04 +04:00
|
|
|
convert import revisions from foreign VCS repositories into
|
|
|
|
Mercurial
|
2018-01-09 15:40:31 +03:00
|
|
|
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
|
2019-02-06 19:38:43 +03:00
|
|
|
disablesymlinks
|
|
|
|
disables symlink support when enabled
|
2018-01-09 15:40:31 +03:00
|
|
|
drop drop specified changeset from the stack
|
|
|
|
edrecord (no help text available)
|
2014-02-28 00:37:04 +04:00
|
|
|
eol automatically manage newlines in repository files
|
|
|
|
extdiff command to allow external programs to compare revisions
|
2018-01-09 15:40:31 +03:00
|
|
|
extorder
|
|
|
|
extutil (no help text available)
|
|
|
|
fastannotate yet another annotate implementation that might be faster
|
|
|
|
fastlog
|
2018-05-30 23:30:10 +03:00
|
|
|
fastmanifest a treemanifest disk cache for speeding up manifest
|
|
|
|
comparison
|
2018-01-09 15:40:31 +03:00
|
|
|
fbconduit (no help text available)
|
|
|
|
fbhistedit extends the existing histedit functionality
|
|
|
|
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:
|
2018-06-28 18:15:26 +03:00
|
|
|
globalrevs extension for providing strictly increasing revision
|
|
|
|
numbers
|
2014-02-28 00:37:04 +04:00
|
|
|
gpg commands to sign and verify changesets
|
2018-01-09 15:40:31 +03:00
|
|
|
grepdiff (no help text available)
|
|
|
|
grpcheck check if the user is in specified groups
|
Split out a new hgevents extension from fsmonitor.
Summary:
This splits out the logic in the `fsmonitor` extension that is responsible for
publishing `hg.filemerge` and `hg.update` state changes to Watchman into
its own extension, `hgevents`. This is because we want the behavior of
`hgevents` when Hg is running in Eden, but we do not want the remaining
behavior of `fsmonitor` when Hg is running in Eden, so splitting the logic
into separate extensions is the most straightforward way to achieve that.
To achieve the split, we move some more logic that is common to both
`fsmonitor` and `hgevents` out of `hgext/fsmonitor/__init__.py` and into
`hgext/extlib/watchmanclient/__init__.py`. Then we move these lines
out of `extsetup()` in `fsmonitor` to create `extsetup()` in `hgevents`:
```
extensions.wrapfunction(merge, 'update', wrapupdate)
extensions.wrapfunction(filemerge, '_xmerge', _xmerge)
```
We also have to pull all of the transitive dependencies for this logic
into `hgevents`.
Finally, we also have to define a `reposetup()` function in `hgevents`
that does a subset of what `reposetup()` does in `fsmonitor`. Specifically,
it ensures that a Watchman client is created for a `repo`, as appropriate,
so that it can be used to dispatch state changes to Watchman in
`state_filemerge` and `state_update`.
Note that the utility functions `createclientforrepo()` and
`getclientforrepo()` have been added to ensure that only one
Watchman client is created (and shared) when both `fsmonitor`
and `hgevents` are enabled.
Today, when an Hg repo is created in Eden, we set `extensions.fsmonitor=!`
in the `.hg/hgrc`:
diffusion/FBS/browse/master/fbcode/eden/hooks/hg/post-clone.py$69
Therefore, to get existing repos (both Eden and non-Eden) to pick up
the `hgevents` extension automatically, we add it to the list of
`[extensions]` in `common.rc`:
diffusion/FBS/browse/master/fbcode/scm/hg/fb/staticfiles/etc/mercurial/repo-specific/common.rc$53-60
as this is where `fsmonitor` is configured. We do not enable it in
`scm/hg/fb/staticfiles/etc/mercurial/facebook.rc` because
there is no reason to enable `hgevents` on Hg servers. Therefore, we
also decline to add `hgevents` to the set of `DEFAULT_EXTENSIONS` in
`scm/hg/mercurial/extensions.py`.
Reviewed By: quark-zju
Differential Revision: D8003628
fbshipit-source-id: 4f23881f8c25f4638f5475c292537b0352ae8d15
2018-05-21 19:27:36 +03:00
|
|
|
hgevents publishes state-enter and state-leave events to Watchman
|
2018-01-09 17:08:01 +03:00
|
|
|
hggit push and pull from a Git server
|
2018-09-26 02:04:12 +03:00
|
|
|
hgsql sync hg repos with MySQL
|
2018-01-11 03:20:45 +03:00
|
|
|
hgsubversion integration with Subversion repositories
|
2018-01-09 15:40:31 +03:00
|
|
|
hiddenerror configurable error messages for accessing hidden changesets
|
2014-02-28 00:37:04 +04:00
|
|
|
highlight syntax highlighting for hgweb (requires Pygments)
|
|
|
|
histedit interactive history editing
|
2018-06-05 14:24:00 +03:00
|
|
|
infinitepush store draft commits in the cloud
|
|
|
|
infinitepushbackup
|
|
|
|
back up draft commits in the cloud
|
2018-01-09 15:40:31 +03:00
|
|
|
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
|
2018-01-03 21:13:17 +03:00
|
|
|
lz4revlog store revlog deltas using lz4 compression
|
2019-02-26 05:52:42 +03:00
|
|
|
memcommit make commits without a working copy
|
2018-01-09 15:40:31 +03:00
|
|
|
morecolors make more output colorful
|
|
|
|
morestatus make status give a bit more context
|
|
|
|
myparent
|
|
|
|
nointerrupt warns but doesn't exit when the user first hits Ctrl+C
|
|
|
|
ownercheck prevent operations on repos not owned by the current user
|
2019-06-20 03:51:19 +03:00
|
|
|
patchrmdir (no help text available)
|
2018-03-26 10:40:01 +03:00
|
|
|
perfsuite (no help text available)
|
2018-01-09 15:40:31 +03:00
|
|
|
phabdiff (no help text available)
|
|
|
|
phabstatus (no help text available)
|
|
|
|
phrevset provides support for Phabricator revsets
|
|
|
|
pullcreatemarkers
|
|
|
|
(no help text available)
|
2014-02-28 00:37:04 +04:00
|
|
|
purge command to delete untracked files from the working
|
|
|
|
directory
|
2018-01-09 15:40:31 +03:00
|
|
|
pushrebase rebases commits during push
|
|
|
|
rage upload useful diagnostics and give instructions for asking
|
|
|
|
for help
|
|
|
|
remotefilelog
|
2018-01-09 16:52:58 +03:00
|
|
|
minimize and speed up large repositories
|
|
|
|
remotenames mercurial extension for improving client/server workflows
|
2018-03-26 20:58:01 +03:00
|
|
|
repogenerator
|
|
|
|
(no help text available)
|
2018-01-09 15:40:31 +03:00
|
|
|
reset reset the active bookmark and working copy to a desired
|
|
|
|
revision
|
2014-02-28 00:37:04 +04:00
|
|
|
schemes extend schemes with shortcuts to repository swarms
|
2019-02-19 12:54:57 +03:00
|
|
|
sendunbundlereplay
|
|
|
|
(no help text available)
|
2014-02-28 00:37:04 +04:00
|
|
|
share share a common history between several working directories
|
|
|
|
shelve save and restore changes to the working directory
|
2018-02-07 01:23:23 +03:00
|
|
|
sigtrace sigtrace - dump stack and memory traces on signal
|
2019-06-28 05:54:30 +03:00
|
|
|
simplecache
|
2018-01-09 15:40:31 +03:00
|
|
|
smartlog command to display a relevant subgraph
|
2019-08-05 21:06:52 +03:00
|
|
|
snapshot extension to snapshot the working copy
|
2018-01-23 23:08:36 +03:00
|
|
|
sparse allow sparse checkouts of the working directory
|
2018-01-09 15:40:31 +03:00
|
|
|
sshaskpass ssh-askpass implementation that works with chg
|
2018-11-19 17:32:33 +03:00
|
|
|
stablerev provide a way to expose the "stable" commit via a revset
|
2018-01-09 15:40:31 +03:00
|
|
|
stat (no help text available)
|
2019-06-20 03:51:19 +03:00
|
|
|
traceprof (no help text available)
|
2018-01-09 15:40:31 +03:00
|
|
|
tweakdefaults
|
|
|
|
user friendly defaults
|
|
|
|
undo (no help text available)
|
|
|
|
whereami (no help text available)
|
2014-02-28 00:37:04 +04:00
|
|
|
win32mbcs allow the use of MBCS paths with problematic encodings
|
2015-09-24 20:58:18 +03:00
|
|
|
|
2018-10-18 21:05:39 +03:00
|
|
|
|
2018-10-26 00:42:34 +03:00
|
|
|
|
2015-09-24 20:58:18 +03:00
|
|
|
Verify that extension keywords appear in help templates
|
|
|
|
|
2019-02-13 08:39:24 +03:00
|
|
|
$ hg help --config extensions.phabdiff= templating|grep phabdiff > /dev/null
|
2015-09-24 20:58:18 +03:00
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Normal help for add
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg add -h
|
|
|
|
hg add [OPTION]... [FILE]...
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
start tracking the specified files
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
Specify files to be tracked by Mercurial. The files will be added to the
|
|
|
|
repository at the next commit.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
To undo an add before files have been committed, use 'hg forget'. To undo
|
|
|
|
an add after files have been committed, use 'hg rm'.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2015-12-17 17:53:40 +03:00
|
|
|
If no names are given, add all files to the repository (except files
|
2019-04-03 00:17:48 +03:00
|
|
|
matching ".hgignore").
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
Returns 0 if all files are successfully added.
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options ([+] can be repeated):
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2011-09-21 22:00:48 +04:00
|
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-n --dry-run do not perform actions, just print output
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
Verbose help for add
|
|
|
|
|
|
|
|
$ hg add -hv
|
|
|
|
hg add [OPTION]... [FILE]...
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
start tracking the specified files
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
Specify files to be tracked by Mercurial. The files will be added to the
|
|
|
|
repository at the next commit.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
To undo an add before files have been committed, use 'hg forget'. To undo
|
|
|
|
an add after files have been committed, use 'hg rm'.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2015-12-17 17:53:40 +03:00
|
|
|
If no names are given, add all files to the repository (except files
|
2019-04-03 00:17:48 +03:00
|
|
|
matching ".hgignore").
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2015-11-25 20:10:31 +03:00
|
|
|
Examples:
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
- New (unknown) files are added automatically by 'hg add':
|
2015-11-25 20:10:31 +03:00
|
|
|
|
|
|
|
$ 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
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
Returns 0 if all files are successfully added.
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options ([+] can be repeated):
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2011-09-21 22:00:48 +04:00
|
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-n --dry-run do not perform actions, just print output
|
2011-09-21 22:00:48 +04:00
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Global options ([+] can be repeated):
|
2011-09-21 22:00:48 +04:00
|
|
|
|
2018-03-20 02:20:55 +03:00
|
|
|
-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: replace 'ascii' with 'utf-8' automatically
Summary:
`ascii` was used as the default / fallback, which is not a user-friendly choice.
Nowadays utf-8 dominates:
- Rust stdlib is utf-8.
- Ruby since 1.9 is utf-8 by default.
- Python 3 is unicode by default.
- Windows 10 adds utf-8 code page.
Given the fact that:
- Our CI sets HGENCODING to utf-8
- Nuclide passes `--encoding=utf-8` to every command.
- Some people have messed up with `LC_*` and complained about hg crashes.
- utf-8 is a super set of ascii, nobody complains that they want `ascii`
encoding and the `utf-8` encoding messed their setup up.
Let's just use `utf-8` as the default encoding. More aggressively, if someone
sets `ascii` as the encoding, it's almost always a mistake. Auto-correct that
to `utf-8` too.
This should also make future integration with Rust easier (where it's enforced
utf-8 and does not have an option to change the encoding). In the future we
might just drop the flexibility of choosing customized encoding, so this diff
autofixes `ascii` to `utf-8`, instead of allowing `ascii` to be set. We cannot
enforce `utf-8` yet, because of Windows.
Here is our encoding strategy vs the upstream's:
| item | upstream | | ours | ours |
| | current | ideal | current | ideal |
| CLI argv | bytes | bytes | utf-8 [1] | utf-8 |
| path | bytes | auto [3] | migrating [2] | utf-8 |
| commit message | utf-8 | utf-8 | utf-8 | utf-8 |
| bookmark name | utf-8 | utf-8 | utf-8 | utf-8 |
| file content | bytes | bytes | bytes | bytes |
[1]: Argv was accidentally enforced utf-8 for command-line arguments by a Rust
wrapper. But it simplified a lot of things and is kind of ok: everything that
can be passed as CLI arguments are utf-8: -M commit message, -b bookmark, paths,
etc. There is no "file content" passed via CLI arguments.
[2]: Path is controversial, because it's possible for systems to have non-utf8
paths. The upstream behavior is incorrect if a repo gets shared among different
encoding systems (ex. both Linux and Windows). We have to know the encoding of
paths to be able to convert them suitable for the local system. One way is to
enforce UTF-8 for paths. The other is to keep encoding information stored with
individual paths (like Ruby strings). The UTF-8 approach is much simpler with
the tradeoff that non-utf-8 paths become unsupported, which seems to be a
reasonable trade-off.
[3]: See https://www.mercurial-scm.org/wiki/WindowsUTF8Plan.
Reviewed By: singhsrb
Differential Revision: D17098991
fbshipit-source-id: c0ff1e586a887233bd43cdb854fb3538aa9b70c2
2019-09-13 01:05:08 +03:00
|
|
|
--encoding ENCODE set the charset encoding (default: utf-8)
|
2018-03-20 02:20:55 +03:00
|
|
|
--encodingmode MODE set the charset encoding mode (default: strict)
|
|
|
|
--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)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2016-05-04 20:18:24 +03:00
|
|
|
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.
|
|
|
|
|
2019-05-16 21:06:04 +03:00
|
|
|
Options:
|
|
|
|
|
|
|
|
--shared show root of the shared repo
|
|
|
|
|
2016-05-04 20:18:24 +03:00
|
|
|
(some details hidden, use --verbose to show
|
|
|
|
complete help)
|
2019-07-27 06:34:57 +03:00
|
|
|
Test help on a self-referencing alias that is a rust command
|
|
|
|
|
|
|
|
$ hg --config "alias.root=root --shared" help root
|
2019-08-20 05:24:40 +03:00
|
|
|
alias for: root --shared
|
|
|
|
|
2019-07-27 06:34:57 +03:00
|
|
|
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
|
2019-08-20 05:24:40 +03:00
|
|
|
alias for: root --shared
|
|
|
|
|
2019-07-27 06:34:57 +03:00
|
|
|
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)
|
2016-05-04 20:18:24 +03:00
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Test help option with version option
|
|
|
|
|
|
|
|
$ hg add -h --version
|
2010-09-23 01:06:02 +04:00
|
|
|
Mercurial Distributed SCM (version *) (glob)
|
2015-09-30 23:43:49 +03:00
|
|
|
(see https://mercurial-scm.org for more information)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-02-11 20:23:33 +03:00
|
|
|
Copyright (C) 2005-* Matt Mackall and others (glob)
|
2010-08-27 18:25:47 +04:00
|
|
|
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
|
2019-02-21 05:38:56 +03:00
|
|
|
(use 'hg add -h' to get help)
|
2010-09-17 02:51:32 +04:00
|
|
|
[255]
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
Test ambiguous command help
|
|
|
|
|
|
|
|
$ hg help ad
|
2018-10-15 19:35:15 +03:00
|
|
|
Commands:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
add start tracking the specified files
|
help: format command and option list help using RST
This patch changes the function which generates help text about commands and
options to use RST formatting. Tables describing options have been formatted
using RST table markup for some time already, so their appearance does not
change. Command lists, however, change appearance.
To format non-verbose command lists, RST field list markup was chosen, because
it resembles the old format:
<http://docutils.sourceforge.net/docs/user/rst/quickref.html#field-lists>
In the old (hand-coded) format of non-verbose command lists, the left column is
12 characters wide. Our minirst implementation formats field lists with a left
column 14 characters wide, so this patch changes the appearance of help output
correspondingly:
<http://markmail.org/message/krl4cxopsnii7s6z?q=mercurial+reinert+from:%22Olav+Reinert%22&page=2>
The minirst markup most closely resembling the old verbose command lists is
definition lists. But using it would cause a blank line to be inserted between
each command definition, making the output excessively long, and no more
useful than before. To avoid this, I chose to use field lists also for verbose
command help, resulting in output like this example:
add add the specified files on the next commit
annotate, blame
show changeset information by line for each file
clone make a copy of an existing repository
commit, ci 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, history show revision history of entire repository or files
merge merge working directory with another revision
phase set or show the current phase name
pull pull changes from the specified source
push push changes to the specified destination
qdiff diff of the current patch and subsequent modifications
qinit init a new queue repository (DEPRECATED)
qnew create a new patch
qpop pop the current patch off the stack
qpush push the next patch onto the stack
qrefresh update the current patch
remove, rm remove the specified files on the next commit
serve start stand-alone webserver
status, st show changed files in the working directory
summary, sum summarize working directory state
update, up, checkout, co
update working directory (or switch revisions)
This change is a move towards generating all help text as a list of strings
marked up with RST.
2012-06-02 13:25:40 +04:00
|
|
|
addremove add all new files, delete all missing files
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2015-09-30 23:43:49 +03:00
|
|
|
Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
|
2012-10-03 20:24:05 +04:00
|
|
|
information about recovery from corruption of the repository.
|
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Returns 0 on success, 1 if errors are encountered.
|
|
|
|
|
2018-02-03 00:01:28 +03:00
|
|
|
Manifest verification can be extremely slow on large repos, so it can be
|
|
|
|
disabled if "verify.skipmanifests" is True:
|
|
|
|
|
|
|
|
[verify]
|
|
|
|
skipmanifests = true
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options ([+] can be repeated):
|
2018-02-16 06:10:45 +03:00
|
|
|
|
|
|
|
-r --rev REV [+] verify the specified revision or revset
|
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg help diff
|
|
|
|
hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
|
|
|
|
|
2019-08-20 05:24:40 +03:00
|
|
|
aliases: d
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
show differences between commits
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-10 00:11:58 +03:00
|
|
|
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.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-10 00:11:58 +03:00
|
|
|
Specify -c to see the changes in the specified commit relative to its
|
|
|
|
parent.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-10 00:11:58 +03:00
|
|
|
By default, this command skips binary files. To override this behavior,
|
|
|
|
specify -a to include binary files in the diff, probably with undesirable
|
|
|
|
results.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-10 00:11:58 +03:00
|
|
|
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'.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-11-10 00:11:58 +03:00
|
|
|
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.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
Returns 0 on success.
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options ([+] can be repeated):
|
2010-08-27 18:25:47 +04:00
|
|
|
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-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
|
2017-04-06 01:31:08 +03:00
|
|
|
--binary generate binary diffs in git mode (default)
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
--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
|
2017-08-30 04:20:50 +03:00
|
|
|
-Z --ignore-space-at-eol ignore changes in whitespace at EOL
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-U --unified NUM number of lines of context to show
|
|
|
|
--stat output diffstat-style summary of changes
|
|
|
|
--root DIR produce diffs relative to subdirectory
|
2018-02-26 19:49:57 +03:00
|
|
|
--only-files-in-revs only show changes for files modified in the
|
|
|
|
requested revisions
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-I --include PATTERN [+] include names matching the given patterns
|
|
|
|
-X --exclude PATTERN [+] exclude names matching the given patterns
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg help status
|
|
|
|
hg status [OPTION]... [FILE]...
|
|
|
|
|
|
|
|
aliases: st
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
list files with pending changes
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
Show status of files in the repository using the following status
|
|
|
|
indicators:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
M = modified
|
|
|
|
A = added
|
|
|
|
R = removed
|
|
|
|
C = clean
|
2019-04-03 00:17:48 +03:00
|
|
|
! = missing (deleted by a non-hg command, but still tracked)
|
2010-08-27 18:25:47 +04:00
|
|
|
? = not tracked
|
|
|
|
I = ignored
|
2014-03-07 03:26:49 +04:00
|
|
|
= origin of the previous file (with --copies)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2019-04-03 00:17:48 +03:00
|
|
|
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.
|
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Returns 0 on success.
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options ([+] can be repeated):
|
2010-08-27 18:25:47 +04:00
|
|
|
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-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
|
2011-09-21 22:00:48 +04:00
|
|
|
--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
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg -q help status
|
|
|
|
hg status [OPTION]... [FILE]...
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
list files with pending changes
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg help foo
|
2014-04-17 03:55:40 +04:00
|
|
|
abort: no such help topic: foo
|
2016-09-21 02:47:46 +03:00
|
|
|
(try 'hg help --keyword foo')
|
2010-09-17 02:51:32 +04:00
|
|
|
[255]
|
2010-08-27 18:25:47 +04:00
|
|
|
|
|
|
|
$ hg skjdfks
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'skjdfks'
|
|
|
|
(use 'hg help' to get help)
|
2010-09-17 02:51:32 +04:00
|
|
|
[255]
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-07-07 10:12:44 +03:00
|
|
|
Typoed command gives suggestion
|
|
|
|
$ hg puls
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'puls'
|
|
|
|
(use 'hg help' to get help)
|
2017-07-07 10:12:44 +03:00
|
|
|
[255]
|
|
|
|
|
|
|
|
Not enabled extension gets suggested
|
|
|
|
|
|
|
|
$ hg rebase
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'rebase'
|
|
|
|
(use 'hg help' to get help)
|
2017-07-07 10:12:44 +03:00
|
|
|
[255]
|
|
|
|
|
|
|
|
Disabled extension gets suggested
|
|
|
|
$ hg --config extensions.rebase=! rebase
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'rebase'
|
|
|
|
(use 'hg help' to get help)
|
2017-07-07 10:12:44 +03:00
|
|
|
[255]
|
2014-02-17 10:39:53 +04:00
|
|
|
|
2015-09-25 18:16:20 +03:00
|
|
|
Make sure that we don't run afoul of the help system thinking that
|
|
|
|
this is a section and erroring out weirdly.
|
|
|
|
|
|
|
|
$ hg .log
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command '.log'
|
|
|
|
(use 'hg help' to get help)
|
2015-09-25 18:16:20 +03:00
|
|
|
[255]
|
|
|
|
|
|
|
|
$ hg log.
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'log.'
|
|
|
|
(use 'hg help' to get help)
|
2015-09-25 18:16:20 +03:00
|
|
|
[255]
|
|
|
|
$ hg pu.lh
|
2019-08-20 05:24:40 +03:00
|
|
|
unknown command 'pu.lh'
|
|
|
|
(use 'hg help' to get help)
|
2015-09-25 18:16:20 +03:00
|
|
|
[255]
|
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
$ cat > helpext.py <<EOF
|
|
|
|
> import os
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import commands, registrar
|
2010-08-27 18:25:47 +04:00
|
|
|
>
|
2014-05-05 09:48:07 +04:00
|
|
|
> cmdtable = {}
|
2016-01-09 17:07:20 +03:00
|
|
|
> command = registrar.command(cmdtable)
|
2014-05-05 09:48:07 +04:00
|
|
|
>
|
2017-05-28 22:42:05 +03:00
|
|
|
> @command(b'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',
|
2014-05-05 09:07:45 +04:00
|
|
|
> norepo=True)
|
2017-05-28 22:42:05 +03:00
|
|
|
> @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
|
|
|
|
> @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
|
|
|
|
> @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
|
2010-08-27 18:25:47 +04:00
|
|
|
> def nohelp(ui, *args, **kwargs):
|
|
|
|
> pass
|
|
|
|
>
|
2016-04-08 21:35:49 +03:00
|
|
|
> def uisetup(ui):
|
2017-05-28 22:42:05 +03:00
|
|
|
> ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
|
|
|
|
> ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
|
2016-04-08 21:35:49 +03:00
|
|
|
>
|
2010-08-27 18:25:47 +04:00
|
|
|
> EOF
|
|
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
|
|
$ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
|
|
|
|
|
2016-04-08 21:35:49 +03:00
|
|
|
Test for aliases
|
|
|
|
|
|
|
|
$ hg help hgalias
|
2019-08-20 05:24:40 +03:00
|
|
|
alias for: summary
|
|
|
|
|
|
|
|
hg summary [--remote]
|
2016-04-08 21:35:49 +03:00
|
|
|
|
2019-08-20 05:24:40 +03:00
|
|
|
aliases: sum
|
2016-04-08 21:35:49 +03:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options:
|
2016-04-08 21:35:49 +03:00
|
|
|
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
--remote check for push and pull
|
2016-04-08 21:35:49 +03:00
|
|
|
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
|
|
|
|
$ hg help shellalias
|
2019-08-20 05:24:40 +03:00
|
|
|
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)
|
2016-04-08 21:35:49 +03:00
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Test command with no help text
|
|
|
|
|
|
|
|
$ hg help nohelp
|
|
|
|
hg nohelp
|
|
|
|
|
|
|
|
(no help text available)
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Options:
|
2014-02-19 20:32:21 +04:00
|
|
|
|
|
|
|
--longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
-n -- normal desc
|
2014-02-19 20:32:21 +04:00
|
|
|
--newline VALUE line1 line2
|
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2012-06-07 17:54:40 +04:00
|
|
|
$ hg help -k nohelp
|
|
|
|
Commands:
|
|
|
|
|
|
|
|
nohelp hg nohelp
|
|
|
|
|
|
|
|
Extension Commands:
|
|
|
|
|
|
|
|
nohelp (no help text available)
|
|
|
|
|
2018-02-07 05:10:48 +03:00
|
|
|
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)
|
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Test that default list of commands omits extension commands
|
|
|
|
|
|
|
|
$ hg help
|
|
|
|
Mercurial Distributed SCM
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
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.
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Get the latest commits from the server:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
pull pull changes from the specified source
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
View commits:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
show show commit in detail
|
|
|
|
diff show differences between commits
|
|
|
|
|
|
|
|
Check out a commit:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
checkout check out a specific commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Work with your checkout:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
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
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Commit changes and modify commits:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
commit save all pending changes or specified files in a new commit
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Rearrange commits:
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
graft copy commits from a different location
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-10-30 17:58:06 +03:00
|
|
|
Undo changes:
|
|
|
|
|
|
|
|
uncommit uncommit part or all of the current commit
|
|
|
|
|
2018-10-17 19:56:04 +03:00
|
|
|
Other commands:
|
2018-10-15 19:35:15 +03:00
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
config show config settings
|
2018-10-26 00:42:34 +03:00
|
|
|
grep search for a pattern in tracked files in the working directory
|
2018-10-15 19:35:15 +03:00
|
|
|
|
|
|
|
Additional help topics:
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
filesets specifying files by their characteristics
|
|
|
|
glossary common terms
|
|
|
|
patterns specifying files by file name pattern
|
|
|
|
revisions specifying commits
|
|
|
|
templating customizing output with templates
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2011-04-05 08:40:47 +04:00
|
|
|
|
2014-03-15 19:14:04 +04:00
|
|
|
Test list of internal help commands
|
|
|
|
|
|
|
|
$ hg help debug
|
2018-10-15 19:35:15 +03:00
|
|
|
Debug commands (internal and unsupported):
|
2014-03-15 19:14:04 +04:00
|
|
|
|
|
|
|
debugancestor
|
|
|
|
find the ancestor revision of two revisions in a given index
|
2015-10-15 23:43:18 +03:00
|
|
|
debugapplystreamclonebundle
|
|
|
|
apply a stream clone bundle file
|
2019-08-10 02:12:58 +03:00
|
|
|
debugbindag serialize dag to a compat binary format
|
2014-03-15 19:14:04 +04:00
|
|
|
debugbuilddag
|
|
|
|
builds a repo with a given DAG from scratch in the current
|
|
|
|
empty repo
|
|
|
|
debugbundle lists the contents of a bundle
|
2017-10-30 19:08:16 +03:00
|
|
|
debugcapabilities
|
|
|
|
lists the capabilities of a remote peer
|
2018-05-27 14:51:52 +03:00
|
|
|
debugcheckcasecollisions
|
|
|
|
check for case collisions against a commit
|
2019-04-04 21:23:56 +03:00
|
|
|
debugcheckoutidentifier
|
|
|
|
display the current checkout unique identifier
|
2014-03-15 19:14:04 +04:00
|
|
|
debugcheckstate
|
|
|
|
validate the correctness of the current dirstate
|
2017-02-21 20:41:37 +03:00
|
|
|
debugcolor show available color, effects or style
|
2014-03-15 19:14:04 +04:00
|
|
|
debugcommands
|
|
|
|
list all available commands and options
|
|
|
|
debugcomplete
|
|
|
|
returns the completion list associated with the given command
|
2015-10-17 21:40:29 +03:00
|
|
|
debugcreatestreamclonebundle
|
|
|
|
create a stream clone bundle file
|
2014-03-15 19:14:04 +04:00
|
|
|
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
|
2015-12-06 10:37:46 +03:00
|
|
|
debugdeltachain
|
|
|
|
dump information about delta chains in a revlog
|
2014-03-15 19:14:04 +04:00
|
|
|
debugdirstate
|
|
|
|
show the contents of the current dirstate
|
|
|
|
debugdiscovery
|
|
|
|
runs the changeset discovery protocol in isolation
|
2018-01-30 04:19:34 +03:00
|
|
|
debugdrawdag read an ASCII graph from stdin and create changesets
|
2019-01-17 06:39:41 +03:00
|
|
|
debugedenimporthelper
|
|
|
|
Obtain data for edenfs
|
2019-09-07 20:20:14 +03:00
|
|
|
debugedenrunpostupdatehook
|
|
|
|
Run post-update hooks for edenfs
|
2019-08-08 12:58:03 +03:00
|
|
|
debugexistingcasecollisions
|
|
|
|
check for existing case collisions in a commit
|
2015-09-10 17:53:07 +03:00
|
|
|
debugextensions
|
|
|
|
show information about active extensions
|
2018-02-07 01:18:14 +03:00
|
|
|
debugfilerevision
|
|
|
|
dump internal metadata for given file revisions
|
2014-03-15 19:14:04 +04:00
|
|
|
debugfileset parse and apply a fileset specification
|
2017-12-07 18:19:46 +03:00
|
|
|
debugformat display format information about the current repository
|
2014-03-15 19:14:04 +04:00
|
|
|
debugfsinfo show information detected about current filesystem
|
2019-09-27 00:43:52 +03:00
|
|
|
debuggentrees
|
|
|
|
(no help text available)
|
2014-03-15 19:14:04 +04:00
|
|
|
debuggetbundle
|
|
|
|
retrieves a bundle from a repo
|
2016-01-05 18:47:08 +03:00
|
|
|
debugignore display the combined ignore pattern and information about
|
|
|
|
ignored files
|
2014-03-15 19:14:04 +04:00
|
|
|
debugindex dump the contents of an index file
|
|
|
|
debugindexdot
|
|
|
|
dump an index DAG as a graphviz dot file
|
|
|
|
debuginstall test Mercurial installation
|
|
|
|
debugknown test whether node ids are known to a repo
|
2014-09-27 01:44:11 +04:00
|
|
|
debuglocks show or modify state of locks
|
2015-10-02 23:00:47 +03:00
|
|
|
debugmergestate
|
|
|
|
print merge state
|
2018-12-13 21:41:51 +03:00
|
|
|
debugmutation
|
2019-09-06 10:40:29 +03:00
|
|
|
display the mutation history (or future) of a commit
|
2019-04-11 12:40:04 +03:00
|
|
|
debugmutationfromobsmarkers
|
|
|
|
convert obsolescence markers to mutation records
|
2014-10-18 00:41:29 +04:00
|
|
|
debugnamecomplete
|
|
|
|
complete "names" - tags, open branch names, bookmark names
|
2014-03-15 19:14:04 +04:00
|
|
|
debugobsolete
|
|
|
|
create arbitrary obsolete marker
|
2016-11-01 17:50:45 +03:00
|
|
|
debugoptADV (no help text available)
|
2014-03-15 19:14:04 +04:00
|
|
|
debugoptDEP (no help text available)
|
2015-04-28 01:12:41 +03:00
|
|
|
debugoptEXP (no help text available)
|
2014-03-15 19:14:04 +04:00
|
|
|
debugpathcomplete
|
|
|
|
complete part or all of a tracked path
|
2017-05-12 21:37:50 +03:00
|
|
|
debugpickmergetool
|
|
|
|
examine which merge tool is chosen for specified file
|
2019-08-10 02:12:58 +03:00
|
|
|
debugpreviewbindag
|
|
|
|
print dag generated by debugbindag
|
2018-08-23 07:26:48 +03:00
|
|
|
debugprocesstree
|
|
|
|
show process tree related to hg
|
2018-03-12 18:02:12 +03:00
|
|
|
debugprogress
|
2018-10-15 19:35:15 +03:00
|
|
|
(no help text available)
|
2014-03-15 19:14:04 +04:00
|
|
|
debugpushkey access the pushkey key/value protocol
|
|
|
|
debugpvec (no help text available)
|
2019-09-21 03:43:59 +03:00
|
|
|
debugpython run python interpreter
|
2019-09-24 19:08:29 +03:00
|
|
|
debugreadauthforuri
|
|
|
|
(no help text available)
|
2014-03-15 19:14:04 +04:00
|
|
|
debugrebuilddirstate
|
|
|
|
rebuild the dirstate as it would look like for the given
|
|
|
|
revision
|
2015-06-22 19:59:48 +03:00
|
|
|
debugrebuildfncache
|
|
|
|
rebuild the fncache file
|
2014-03-15 19:14:04 +04:00
|
|
|
debugrename dump rename information
|
|
|
|
debugrevlog show data and statistics about a revlog
|
|
|
|
debugrevspec parse and apply a revision specification
|
2019-08-20 05:24:40 +03:00
|
|
|
debugrunshell
|
|
|
|
run a shell command
|
2014-03-15 19:14:04 +04:00
|
|
|
debugsetparents
|
|
|
|
manually set the parents of the current working directory
|
2018-01-17 23:54:24 +03:00
|
|
|
debugshell (no help text available)
|
2017-03-30 07:27:46 +03:00
|
|
|
debugssl test a secure connection to a server
|
2018-12-13 20:05:15 +03:00
|
|
|
debugstatus common performance issues for status
|
clidispatch: register commands without CommandDefinition
Summary:
Previously, the command table state in `Dispatcher` is confusing:
command_table: BTreeMap<String, CommandFunc>,
commands: BTreeMap<String, CommandDefinition>,
Question: In what case do these BTreeMaps have different keys?
It does not make much sense. Therefore merge `CommandFunc` into
`CommandDefinition`, and remove the `command_table` field.
This affects the `register` API:
fn register(&mut self, command: CommandDefinition, f: FN)
`f` is part of `CommandFunc`, which duplicates with `CommandDefinition`.
`CommandDefinition` contains 3 things: name, doc, and flags.
In the new `define_flags!` world, `flags` can be inferred from the type
of the function, so only `name` and `doc` are needed. Therefore change
the register function to:
fn register(&mut self, f: FN, name: &str, doc: &str)
Update `hgcommands` to use the newer APIs. Commands can now be registered
without going through `CommandDefinition` explicitly.
Reviewed By: sfilipco
Differential Revision: D16733275
fbshipit-source-id: 68e404a5b271b72aad52f640123b1c083f31d76c
2019-08-20 05:24:40 +03:00
|
|
|
debugstore print information about blobstore
|
2019-02-25 14:50:46 +03:00
|
|
|
debugstrip strip commits and all their descendants from the repository
|
2014-03-15 19:14:04 +04:00
|
|
|
debugsuccessorssets
|
|
|
|
show set of successors for revision
|
2016-02-13 19:06:12 +03:00
|
|
|
debugtemplate
|
|
|
|
parse and apply a template
|
2018-10-10 13:49:30 +03:00
|
|
|
debugtreestate
|
|
|
|
manage treestate
|
2017-05-02 22:35:06 +03:00
|
|
|
debugupdatecaches
|
|
|
|
warm all known caches in the repository
|
debugcommands: stub for debugupgraderepo command
Currently, if Mercurial introduces a new repository/store feature or
changes behavior of an existing feature, users must perform an
`hg clone` to create a new repository with hopefully the
correct/optimal settings. Unfortunately, even `hg clone` may not
give the correct results. For example, if you do a local `hg clone`,
you may get hardlinks to revlog files that inherit the old state.
If you `hg clone` from a remote or `hg clone --pull`, changegroup
application may bypass some optimization, such as converting to
generaldelta.
Optimizing a repository is harder than it seems and requires more
than a simple `hg` command invocation.
This commit starts the process of changing that. We introduce
`hg debugupgraderepo`, a command that performs an in-place upgrade
of a repository to use new, optimal features. The command is just
a stub right now. Features will be added in subsequent commits.
This commit does foreshadow some of the behavior of the new command,
notably that it doesn't do anything by default and that it takes
arguments that influence what actions it performs. These will be
explained more in subsequent commits.
2016-11-25 03:24:09 +03:00
|
|
|
debugupgraderepo
|
|
|
|
upgrade a repository to use different features
|
2019-04-11 12:40:06 +03:00
|
|
|
debugvisibility
|
|
|
|
control visibility tracking
|
2014-03-15 19:14:04 +04:00
|
|
|
debugwalk show how files match on given patterns
|
|
|
|
debugwireargs
|
|
|
|
(no help text available)
|
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Test list of commands with command with no help text
|
|
|
|
|
|
|
|
$ hg help helpext
|
|
|
|
helpext extension - no help text available
|
|
|
|
|
2018-10-15 19:35:15 +03:00
|
|
|
Commands:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
help: format command and option list help using RST
This patch changes the function which generates help text about commands and
options to use RST formatting. Tables describing options have been formatted
using RST table markup for some time already, so their appearance does not
change. Command lists, however, change appearance.
To format non-verbose command lists, RST field list markup was chosen, because
it resembles the old format:
<http://docutils.sourceforge.net/docs/user/rst/quickref.html#field-lists>
In the old (hand-coded) format of non-verbose command lists, the left column is
12 characters wide. Our minirst implementation formats field lists with a left
column 14 characters wide, so this patch changes the appearance of help output
correspondingly:
<http://markmail.org/message/krl4cxopsnii7s6z?q=mercurial+reinert+from:%22Olav+Reinert%22&page=2>
The minirst markup most closely resembling the old verbose command lists is
definition lists. But using it would cause a blank line to be inserted between
each command definition, making the output excessively long, and no more
useful than before. To avoid this, I chose to use field lists also for verbose
command help, resulting in output like this example:
add add the specified files on the next commit
annotate, blame
show changeset information by line for each file
clone make a copy of an existing repository
commit, ci 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, history show revision history of entire repository or files
merge merge working directory with another revision
phase set or show the current phase name
pull pull changes from the specified source
push push changes to the specified destination
qdiff diff of the current patch and subsequent modifications
qinit init a new queue repository (DEPRECATED)
qnew create a new patch
qpop pop the current patch off the stack
qpush push the next patch onto the stack
qrefresh update the current patch
remove, rm remove the specified files on the next commit
serve start stand-alone webserver
status, st show changed files in the working directory
summary, sum summarize working directory state
update, up, checkout, co
update working directory (or switch revisions)
This change is a move towards generating all help text as a list of strings
marked up with RST.
2012-06-02 13:25:40 +04:00
|
|
|
nohelp (no help text available)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2014-02-17 10:39:53 +04:00
|
|
|
|
2016-11-01 17:50:45 +03:00
|
|
|
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)
|
2014-02-17 10:39:53 +04:00
|
|
|
$ hg help debugoptDEP
|
|
|
|
hg debugoptDEP
|
|
|
|
|
|
|
|
(no help text available)
|
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2014-02-17 10:39:53 +04:00
|
|
|
|
2015-04-28 01:12:41 +03:00
|
|
|
$ hg help debugoptEXP
|
|
|
|
hg debugoptEXP
|
|
|
|
|
|
|
|
(no help text available)
|
|
|
|
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
|
2016-11-01 17:50:45 +03:00
|
|
|
test advanced, deprecated and experimental options are shown with -v
|
|
|
|
$ hg help -v debugoptADV | grep aopt
|
|
|
|
--aopt option is (ADVANCED)
|
2014-02-17 10:39:53 +04:00
|
|
|
$ hg help -v debugoptDEP | grep dopt
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
--dopt option is (DEPRECATED)
|
2015-04-28 01:12:41 +03:00
|
|
|
$ hg help -v debugoptEXP | grep eopt
|
help: backout 6f89f03ad369 (mark boolean flags with [no-] in help) for now
The ability to negate any boolean flags itself is great, but I think we are not
ready to expose the help side of it yet.
First, while there exist a handful of such flags whose default value can be
changed (eg: git diff, patchwork confirmation), there is only a few of them. The
users who benefit the most from this change are alias users and large
installation that can deploy extension to change behavior (eg: facebook
tweakdefault). So the majority of user who will be affected by a large change
to command help that is not yet relevant to them. (I expect this to become
relevant when ui.progressive start to exists).
Below is an example of the impact of the new help on 'hg help diff':
-r --rev REV [+] revision
-c --change REV change made by revision
-a --[no-]text treat all files as text
-g --[no-]git use git extended diff format
--[no-]nodates omit dates from diff headers
--[no-]noprefix omit a/ and b/ prefixes from filenames
-p --[no-]show-function show which function each change is in
--[no-]reverse produce a diff that undoes the changes
-w --[no-]ignore-all-space ignore white space when comparing lines
-b --[no-]ignore-space-change ignore changes in the amount of white space
-B --[no-]ignore-blank-lines ignore changes whose lines are all blank
-U --unified NUM number of lines of context to show
--[no-]stat output diffstat-style summary of changes
--root DIR produce diffs relative to subdirectory
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
-S --[no-]subrepos recurse into subrepositories
Another issue with the current state of help, the default value for the
flag is not conveyed to the user. For example in the 'backout' help, there is
no real distinction between "--[no-]backup" (default to True) and "--[no-]keep"
(default) to False:
--[no-]backup no backups
--[no-]keep do not modify working directory during strip
In addition, I've discussed with Augie Fackler and the last batch of the work on
this have burned him out quite some. Therefore he is not intending to perform
any more work on this topic. Quoting him, he would rather see the help part
backed out than spending more time on it.
I do not think we are ready to expose this to users in 4.0 (freeze in a week),
especially because we cannot expect quick improvement on these aspect as this
topic no longer have an owner. We should be able to reintroduce that change in
the future when someone get back on it and the main issues are solves:
* Introduction of ui.progressive makes it relevant for a majority of user,
* Current default value are efficiently conveyed to the user.
(In addition, the excerpt from diff help show that we still have some issue with
some negative option like '--nodates' so further improvement are probably
welcome there.)
2016-10-09 04:11:18 +03:00
|
|
|
--eopt option is (EXPERIMENTAL)
|
2014-02-17 10:39:53 +04:00
|
|
|
|
2018-02-02 23:17:46 +03:00
|
|
|
#if gettext normal-layout
|
2014-02-17 10:39:53 +04:00
|
|
|
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)
|
|
|
|
|
2014-08-12 12:01:37 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
2014-04-16 01:51:27 +04:00
|
|
|
#endif
|
2014-02-17 10:39:53 +04:00
|
|
|
|
2014-07-31 23:31:31 +04:00
|
|
|
Test commands that collide with topics (issue4240)
|
|
|
|
|
|
|
|
$ hg config -hq
|
|
|
|
hg config [-u] [NAME]...
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
show config settings
|
2014-07-31 23:31:31 +04:00
|
|
|
$ hg showconfig -hq
|
|
|
|
hg config [-u] [NAME]...
|
|
|
|
|
2018-11-08 06:57:38 +03:00
|
|
|
show config settings
|
2014-07-31 23:31:31 +04:00
|
|
|
|
2010-08-27 18:25:47 +04:00
|
|
|
Test a help topic
|
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
$ 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.
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
Many date formats are valid. Here are some examples:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
- "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
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
Lastly, there is Mercurial's internal format:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
- "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
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).
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
The log command also accepts date ranges:
|
2010-08-27 18:25:47 +04:00
|
|
|
|
2017-01-11 22:40:40 +03:00
|
|
|
- "<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
|
2010-10-23 21:21:49 +04:00
|
|
|
|
2015-08-31 02:03:38 +03:00
|
|
|
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".
|
|
|
|
|
2015-09-04 00:06:27 +03:00
|
|
|
Unrelated trailing paragraphs shouldn't be included
|
|
|
|
|
|
|
|
$ hg help config.extramsg | grep '^$'
|
|
|
|
|
|
|
|
|
2015-09-03 06:50:45 +03:00
|
|
|
Test capitalized section name
|
|
|
|
|
|
|
|
$ hg help scripting.HGPLAIN > /dev/null
|
|
|
|
|
2015-09-02 22:12:08 +03:00
|
|
|
Help subsection:
|
|
|
|
|
|
|
|
$ hg help config.charsets |grep "Email example:" > /dev/null
|
|
|
|
[1]
|
|
|
|
|
2015-09-10 17:48:20 +03:00
|
|
|
Show nested definitions
|
|
|
|
("profiling.type"[break]"ls"[break]"stat"[break])
|
|
|
|
|
|
|
|
$ hg help config.type | egrep '^$'|wc -l
|
|
|
|
\s*3 (re)
|
|
|
|
|
2016-01-01 19:59:13 +03:00
|
|
|
Separate sections from subsections
|
|
|
|
|
|
|
|
$ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
|
|
|
|
"format"
|
|
|
|
--------
|
|
|
|
|
|
|
|
"usegeneraldelta"
|
|
|
|
|
|
|
|
"dotencode"
|
|
|
|
|
|
|
|
"usefncache"
|
|
|
|
|
|
|
|
"usestore"
|
|
|
|
|
2018-06-14 03:49:29 +03:00
|
|
|
"dirstate"
|
2018-06-11 23:49:45 +03:00
|
|
|
|
2018-01-03 21:13:17 +03:00
|
|
|
"uselz4"
|
|
|
|
|
2018-03-07 00:20:16 +03:00
|
|
|
"cgdeltabase"
|
|
|
|
|
2016-01-01 19:59:13 +03:00
|
|
|
"profiling"
|
|
|
|
-----------
|
|
|
|
|
|
|
|
"format"
|
|
|
|
|
|
|
|
"progress"
|
|
|
|
----------
|
|
|
|
|
|
|
|
"format"
|
|
|
|
|
|
|
|
|
2015-09-02 22:12:08 +03:00
|
|
|
Last item in help config.*:
|
|
|
|
|
|
|
|
$ hg help config.`hg help config|grep '^ "'| \
|
|
|
|
> tail -1|sed 's![ "]*!!g'`| \
|
2016-09-21 02:49:20 +03:00
|
|
|
> grep 'hg help -c config' > /dev/null
|
2015-09-02 22:12:08 +03:00
|
|
|
[1]
|
|
|
|
|
|
|
|
note to use help -c for general hg help config:
|
|
|
|
|
2016-09-21 02:49:20 +03:00
|
|
|
$ hg help config |grep 'hg help -c config' > /dev/null
|
2015-09-02 22:12:08 +03:00
|
|
|
|
2011-03-12 14:46:31 +03:00
|
|
|
Test templating help
|
|
|
|
|
|
|
|
$ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
|
2012-01-11 21:08:25 +04:00
|
|
|
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.
|
2011-03-12 14:46:31 +03:00
|
|
|
|
2015-09-26 06:17:44 +03:00
|
|
|
Test deprecated items
|
|
|
|
|
|
|
|
$ hg help -v templating | grep currentbookmark
|
|
|
|
currentbookmark
|
|
|
|
$ hg help templating | (grep currentbookmark || true)
|
|
|
|
|
2010-10-23 21:21:49 +04:00
|
|
|
Test help hooks
|
|
|
|
|
|
|
|
$ cat > helphook1.py <<EOF
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import help
|
2010-10-23 21:21:49 +04:00
|
|
|
>
|
2015-09-26 06:11:46 +03:00
|
|
|
> def rewrite(ui, topic, doc):
|
2010-10-23 21:21:49 +04:00
|
|
|
> return doc + '\nhelphook1\n'
|
|
|
|
>
|
|
|
|
> def extsetup(ui):
|
2017-01-11 22:37:38 +03:00
|
|
|
> help.addtopichook('revisions', rewrite)
|
2010-10-23 21:21:49 +04:00
|
|
|
> EOF
|
|
|
|
$ cat > helphook2.py <<EOF
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import help
|
2010-10-23 21:21:49 +04:00
|
|
|
>
|
2015-09-26 06:11:46 +03:00
|
|
|
> def rewrite(ui, topic, doc):
|
2010-10-23 21:21:49 +04:00
|
|
|
> return doc + '\nhelphook2\n'
|
|
|
|
>
|
|
|
|
> def extsetup(ui):
|
2017-01-11 22:37:38 +03:00
|
|
|
> help.addtopichook('revisions', rewrite)
|
2010-10-23 21:21:49 +04:00
|
|
|
> EOF
|
|
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
|
|
$ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
|
|
|
|
$ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
|
|
|
|
$ hg help revsets | grep helphook
|
|
|
|
helphook1
|
|
|
|
helphook2
|
2012-06-07 03:42:50 +04:00
|
|
|
|
2015-12-09 22:09:35 +03:00
|
|
|
help -c should only show debug --debug
|
|
|
|
|
2015-12-09 08:56:54 +03:00
|
|
|
$ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
|
2015-12-09 22:09:35 +03:00
|
|
|
[1]
|
|
|
|
|
|
|
|
help -c should only show deprecated for -v
|
|
|
|
|
2015-12-09 08:56:54 +03:00
|
|
|
$ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
|
2015-12-09 22:09:35 +03:00
|
|
|
[1]
|
|
|
|
|
2016-01-10 11:03:58 +03:00
|
|
|
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
|
|
|
|
|
2015-09-11 03:22:37 +03:00
|
|
|
Test -e / -c / -k combinations
|
|
|
|
|
2015-12-14 09:00:32 +03:00
|
|
|
$ hg help -c|egrep '^[A-Z].*:|^ debug'
|
2015-12-09 08:56:54 +03:00
|
|
|
Commands:
|
2015-12-14 09:00:32 +03:00
|
|
|
$ hg help -e|egrep '^[A-Z].*:|^ debug'
|
2015-12-09 08:56:54 +03:00
|
|
|
Extensions:
|
2019-05-25 02:19:14 +03:00
|
|
|
debugcommitmessage (no help text available)
|
|
|
|
debugshell a python shell with repo, changelog & manifest objects
|
2015-12-14 08:29:55 +03:00
|
|
|
$ hg help -k|egrep '^[A-Z].*:|^ debug'
|
2015-12-09 08:56:54 +03:00
|
|
|
Topics:
|
|
|
|
Commands:
|
|
|
|
Extensions:
|
2019-05-25 02:19:14 +03:00
|
|
|
debugcommitmessage (no help text available)
|
|
|
|
debugshell a python shell with repo, changelog & manifest objects
|
2015-12-09 08:56:54 +03:00
|
|
|
Extension Commands:
|
2015-11-27 17:10:48 +03:00
|
|
|
$ hg help -c schemes
|
|
|
|
abort: no such help topic: schemes
|
2016-09-21 02:47:46 +03:00
|
|
|
(try 'hg help --keyword schemes')
|
2015-09-11 03:22:37 +03:00
|
|
|
[255]
|
2015-11-27 17:10:48 +03:00
|
|
|
$ hg help -e schemes |head -1
|
|
|
|
schemes extension - extend schemes with shortcuts to repository swarms
|
2015-09-11 03:22:37 +03:00
|
|
|
$ 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
|
2016-09-21 02:47:46 +03:00
|
|
|
(try 'hg help --keyword commit')
|
2015-09-11 03:22:37 +03:00
|
|
|
[255]
|
|
|
|
|
2012-06-07 03:42:50 +04:00
|
|
|
Test keyword search help
|
|
|
|
|
2013-09-23 15:23:25 +04:00
|
|
|
$ cat > prefixedname.py <<EOF
|
|
|
|
> '''matched against word "clone"
|
|
|
|
> '''
|
|
|
|
> EOF
|
|
|
|
$ echo '[extensions]' >> $HGRCPATH
|
|
|
|
$ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
|
2012-06-07 03:42:50 +04:00
|
|
|
$ hg help -k clone
|
|
|
|
Topics:
|
|
|
|
|
|
|
|
config Configuration Files
|
|
|
|
extensions Using Additional Features
|
2018-11-08 06:57:38 +03:00
|
|
|
glossary Common Terms
|
2012-06-07 03:42:50 +04:00
|
|
|
phases Working with Phases
|
|
|
|
urls URL Paths
|
|
|
|
|
|
|
|
Commands:
|
|
|
|
|
2015-12-09 22:09:35 +03:00
|
|
|
bookmarks create a new bookmark or list existing bookmarks
|
|
|
|
clone make a copy of an existing repository
|
|
|
|
paths show aliases for remote repositories
|
2012-06-07 03:42:50 +04:00
|
|
|
|
|
|
|
Extensions:
|
|
|
|
|
2016-01-08 21:58:04 +03:00
|
|
|
clonebundles advertise pre-generated bundles to seed clones
|
2013-09-23 15:23:25 +04:00
|
|
|
prefixedname matched against word "clone"
|
2012-06-07 03:42:50 +04:00
|
|
|
|
2014-04-17 03:55:40 +04:00
|
|
|
Test unfound topic
|
|
|
|
|
|
|
|
$ hg help nonexistingtopicthatwillneverexisteverever
|
|
|
|
abort: no such help topic: nonexistingtopicthatwillneverexisteverever
|
2016-09-21 02:47:46 +03:00
|
|
|
(try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
|
2014-04-17 03:55:40 +04:00
|
|
|
[255]
|
|
|
|
|
2014-04-17 04:01:03 +04:00
|
|
|
Test unfound keyword
|
|
|
|
|
|
|
|
$ hg help --keyword nonexistingwordthatwillneverexisteverever
|
|
|
|
abort: no matches
|
2016-09-21 02:47:46 +03:00
|
|
|
(try 'hg help' for a list of topics)
|
2014-04-17 04:01:03 +04:00
|
|
|
[255]
|
|
|
|
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
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,
|
2014-12-18 23:53:55 +03:00
|
|
|
> if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
>
|
|
|
|
> This paragraph is never omitted, too (for extension)
|
|
|
|
> '''
|
2017-08-22 22:51:30 +03:00
|
|
|
> from __future__ import absolute_import
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import commands, help
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
> testtopic = """This paragraph is never omitted (for topic).
|
|
|
|
>
|
|
|
|
> .. container:: verbose
|
|
|
|
>
|
|
|
|
> This paragraph is omitted,
|
2014-12-18 23:53:55 +03:00
|
|
|
> if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
>
|
|
|
|
> 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.",
|
2015-09-26 06:06:30 +03:00
|
|
|
> lambda ui: testtopic))
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
> 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)
|
|
|
|
|
2014-08-12 12:25:51 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
|
|
|
|
no commands defined
|
|
|
|
$ hg help -v addverboseitems
|
|
|
|
addverboseitems extension - extension to test omit indicating.
|
|
|
|
|
|
|
|
This paragraph is never omitted (for extension)
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
This paragraph is omitted, if 'hg help' is invoked without "-v" (for
|
2014-12-18 23:53:55 +03:00
|
|
|
extension)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
|
|
|
|
This paragraph is never omitted, too (for extension)
|
|
|
|
|
|
|
|
no commands defined
|
|
|
|
$ hg help topic-containing-verbose
|
|
|
|
This is the topic to test omit indicating.
|
2013-02-10 15:58:57 +04:00
|
|
|
""""""""""""""""""""""""""""""""""""""""""
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
|
|
|
|
This paragraph is never omitted (for topic).
|
|
|
|
|
|
|
|
This paragraph is never omitted, too (for topic)
|
|
|
|
|
2014-08-12 12:25:51 +04:00
|
|
|
(some details hidden, use --verbose to show complete help)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
$ hg help -v topic-containing-verbose
|
|
|
|
This is the topic to test omit indicating.
|
2013-02-10 15:58:57 +04:00
|
|
|
""""""""""""""""""""""""""""""""""""""""""
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
|
|
|
|
This paragraph is never omitted (for topic).
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
This paragraph is omitted, if 'hg help' is invoked without "-v" (for
|
2014-12-18 23:53:55 +03:00
|
|
|
topic)
|
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
2012-10-18 05:31:15 +04:00
|
|
|
|
|
|
|
This paragraph is never omitted, too (for topic)
|
|
|
|
|
2014-10-01 01:40:10 +04:00
|
|
|
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
|
2016-01-12 09:03:36 +03:00
|
|
|
graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
|
2014-10-01 01:40:10 +04:00
|
|
|
limited by the requirement for children to have at most two parents.
|
|
|
|
|
2014-10-06 15:35:53 +04:00
|
|
|
|
|
|
|
$ hg help hgrc.paths
|
|
|
|
"paths"
|
|
|
|
-------
|
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
Assigns symbolic names and behavior to repositories.
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
Options are symbolic names defining the URL or directory that is the
|
|
|
|
location of the repository. Example:
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
[paths]
|
|
|
|
my_server = https://example.com/my_repo
|
|
|
|
local_path = /home/me/repo
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
These symbolic names can be used from the command line. To pull from
|
2016-01-12 09:03:36 +03:00
|
|
|
"my_server": 'hg pull my_server'. To push to "local_path": 'hg push
|
|
|
|
local_path'.
|
2015-12-06 08:11:04 +03:00
|
|
|
|
|
|
|
Options containing colons (":") denote sub-options that can influence
|
|
|
|
behavior for that specific path. Example:
|
2014-10-06 15:35:53 +04:00
|
|
|
|
|
|
|
[paths]
|
2015-12-06 08:11:04 +03:00
|
|
|
my_server = https://example.com/my_path
|
|
|
|
my_server:pushurl = ssh://example.com/my_path
|
|
|
|
|
|
|
|
The following sub-options can be defined:
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
"pushurl"
|
|
|
|
The URL to use for push operations. If not defined, the location
|
|
|
|
defined by the path's main entry is used.
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2016-06-26 17:59:02 +03:00
|
|
|
"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.
|
|
|
|
|
2015-12-06 08:11:04 +03:00
|
|
|
The following special named paths exist:
|
|
|
|
|
|
|
|
"default"
|
|
|
|
The URL or directory to use when no source or remote is specified.
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
'hg clone' will automatically define this path to the location the
|
2015-12-06 08:11:04 +03:00
|
|
|
repository was cloned from.
|
|
|
|
|
|
|
|
"default-push"
|
2016-01-12 09:03:36 +03:00
|
|
|
(deprecated) The URL or directory for the default 'hg push' location.
|
2015-12-06 08:11:04 +03:00
|
|
|
"default:pushurl" should be used instead.
|
2014-10-06 15:35:53 +04:00
|
|
|
|
2014-10-01 01:40:10 +04:00
|
|
|
$ hg help glossary.mcguffin
|
2017-02-05 12:57:19 +03:00
|
|
|
abort: help section not found: glossary.mcguffin
|
2014-10-01 01:40:10 +04:00
|
|
|
[255]
|
|
|
|
|
2014-11-01 21:02:31 +03:00
|
|
|
$ hg help glossary.mc.guffin
|
2017-02-05 12:57:19 +03:00
|
|
|
abort: help section not found: glossary.mc.guffin
|
2014-11-01 21:02:31 +03:00
|
|
|
[255]
|
|
|
|
|
2015-07-05 06:11:32 +03:00
|
|
|
$ hg help template.files
|
|
|
|
files List of strings. All files modified, added, or removed by
|
|
|
|
this changeset.
|
2016-09-23 11:15:05 +03:00
|
|
|
files(pattern)
|
|
|
|
All files of the current changeset matching the pattern. See
|
|
|
|
'hg help patterns'.
|
2015-07-05 06:11:32 +03:00
|
|
|
|
2016-05-13 01:19:59 +03:00
|
|
|
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().
|
|
|
|
|
2017-07-05 19:10:11 +03:00
|
|
|
$ $PYTHON <<EOF
|
2016-05-13 01:19:59 +03:00
|
|
|
> def escape(s):
|
|
|
|
> return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
|
|
|
|
> # translation of "record" in ja_JP.cp932
|
|
|
|
> upper = "\x8bL\x98^"
|
|
|
|
> # str.lower()-ed section name should be treated as different one
|
|
|
|
> lower = "\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
|
|
|
|
> ------------------
|
|
|
|
>
|
2016-09-21 02:49:20 +03:00
|
|
|
> This should be hidden at 'hg help ambiguous' with section name.
|
2016-05-13 01:19:59 +03:00
|
|
|
> '''
|
|
|
|
> """ % (escape(upper), escape(lower)))
|
|
|
|
> EOF
|
|
|
|
|
2016-09-01 23:06:42 +03:00
|
|
|
Show help content of disabled extensions
|
|
|
|
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
|
|
> [extensions]
|
|
|
|
> ambiguous = !./ambiguous.py
|
|
|
|
> EOF
|
|
|
|
$ hg help -e ambiguous
|
|
|
|
ambiguous extension - (no help text available)
|
|
|
|
|
2016-09-21 02:47:46 +03:00
|
|
|
(use 'hg help extensions' for information on enabling extensions)
|
2016-09-01 23:06:42 +03:00
|
|
|
|
2015-02-10 18:57:58 +03:00
|
|
|
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.
|
|
|
|
|
2016-01-12 09:03:36 +03:00
|
|
|
Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
|
|
|
|
backout' and in several extensions.
|
2015-02-10 18:57:58 +03:00
|
|
|
|
|
|
|
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".
|
|
|
|
|
2017-10-21 00:15:46 +03:00
|
|
|
This implies premerge. Therefore, files aren't dumped, if premerge runs
|
filemerge: add internal merge tool to dump files forcibly
Internal merge tool :dump implies premerge. Therefore, files aren't
dumped, if premerge runs successfully.
This undocumented behavior might confuse users, if they want to always
dump files. But just making :dump omit premerge might cause backward
compatibility issue for existing automation.
This patch adds new internal merge tool :forcedump, which works as
same as :dump, but omits premerge always.
Internal tools annotated with "nomerge" should merge "change and
delete" correctly, but _forcedump() can't. Therefore, it is annotated
with "mergeonly" to always omit premerge, even though it doesn't merge
files actually.
This patch also adds explanation about premerge to :dump, to clarify
how :dump actually works.
BTW, this patch specifies internal tools with "internal:" prefix in
newly added test scenario in test-merge-tools.t, even though this
prefix is already deprecated. This is only for similarity to other
tests in test-merge-tools.t.
2017-05-12 21:31:42 +03:00
|
|
|
successfully. Use :forcedump to forcibly write files out.
|
|
|
|
|
2015-02-10 18:57:58 +03:00
|
|
|
":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.
|
|
|
|
|
filemerge: add internal merge tool to dump files forcibly
Internal merge tool :dump implies premerge. Therefore, files aren't
dumped, if premerge runs successfully.
This undocumented behavior might confuse users, if they want to always
dump files. But just making :dump omit premerge might cause backward
compatibility issue for existing automation.
This patch adds new internal merge tool :forcedump, which works as
same as :dump, but omits premerge always.
Internal tools annotated with "nomerge" should merge "change and
delete" correctly, but _forcedump() can't. Therefore, it is annotated
with "mergeonly" to always omit premerge, even though it doesn't merge
files actually.
This patch also adds explanation about premerge to :dump, to clarify
how :dump actually works.
BTW, this patch specifies internal tools with "internal:" prefix in
newly added test scenario in test-merge-tools.t, even though this
prefix is already deprecated. This is only for similarity to other
tests in test-merge-tools.t.
2017-05-12 21:31:42 +03:00
|
|
|
":forcedump"
|
|
|
|
Creates three versions of the files as same as :dump, but omits
|
|
|
|
premerge.
|
|
|
|
|
2015-02-10 18:57:58 +03:00
|
|
|
":local"
|
2016-03-17 03:36:01 +03:00
|
|
|
Uses the local 'p1()' version of files as the merged version.
|
2015-02-10 18:57:58 +03:00
|
|
|
|
|
|
|
":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.
|
|
|
|
|
2015-09-10 16:41:11 +03:00
|
|
|
":merge-local"
|
|
|
|
Like :merge, but resolve all conflicts non-interactively in favor of the
|
2016-03-17 03:36:01 +03:00
|
|
|
local 'p1()' changes.
|
2015-09-10 16:41:11 +03:00
|
|
|
|
|
|
|
":merge-other"
|
|
|
|
Like :merge, but resolve all conflicts non-interactively in favor of the
|
2016-03-17 03:36:01 +03:00
|
|
|
other 'p2()' changes.
|
2015-09-10 16:41:11 +03:00
|
|
|
|
2015-02-10 18:57:58 +03:00
|
|
|
":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"
|
2016-03-17 03:36:01 +03:00
|
|
|
Uses the other 'p2()' version of files as the merged version.
|
2015-02-10 18:57:58 +03:00
|
|
|
|
|
|
|
":prompt"
|
2016-03-17 03:36:01 +03:00
|
|
|
Asks the user which of the local 'p1()' or the other 'p2()' version to
|
|
|
|
keep as the merged version.
|
2015-02-10 18:57:58 +03:00
|
|
|
|
|
|
|
":tagmerge"
|
|
|
|
Uses the internal tag merge algorithm (experimental).
|
|
|
|
|
2015-08-16 11:19:00 +03:00
|
|
|
":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.
|
|
|
|
|
2015-02-10 18:57:58 +03:00
|
|
|
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.
|
2017-05-05 20:33:00 +03:00
|
|
|
8. Otherwise, ":prompt" is used.
|
2015-02-10 18:57:58 +03:00
|
|
|
|
|
|
|
Note:
|
|
|
|
After selecting a merge program, Mercurial will by default attempt to
|
|
|
|
merge the files using a simple merge algorithm first. Only if it
|
2017-11-01 06:09:29 +03:00
|
|
|
doesn't succeed because of conflicting changes will Mercurial actually
|
2015-02-10 18:57:58 +03:00
|
|
|
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.
|
|
|
|
|
2017-04-01 23:42:06 +03:00
|
|
|
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"
|
2017-04-04 02:45:09 +03:00
|
|
|
better compression than "gzip". It also frequently yields better (?)
|
2017-04-01 23:42:06 +03:00
|
|
|
|
2018-02-02 23:17:46 +03:00
|
|
|
#if normal-layout
|
2012-08-13 16:25:48 +04:00
|
|
|
Test usage of section marks in help documents
|
|
|
|
|
|
|
|
$ cd "$TESTDIR"/../doc
|
2019-09-21 03:43:59 +03:00
|
|
|
$ hg debugpython -- check-seclevel.py
|
2013-03-01 22:42:42 +04:00
|
|
|
#endif
|