{
    "content": [
        {
            "type": "text",
            "text": "# HG(1) (man)\n\n**Summary:** hg - Mercurial source code management system\n\n**Synopsis:** hg command [option]... [argument]...\n\n## Flags\n\n| Flag | Long | Arg | Description |\n|------|------|-----|-------------|\n| -R | — | — | repository root directory or name of overlay bundle file --cwd <DIR> change working directory |\n| -y | --noninteractive | — | do not prompt, automatically pick the first choice for all prompts |\n| -q | --quiet | — | suppress output |\n| -v | --verbose | — | enable additional output --color <TYPE> when to colorize (boolean, always, auto, never, or debug) --config <CONFIG[+]> s |\n| — | --debug | — | enable debugging output |\n| — | --debugger | — | start debugger --encoding <ENCODE> set the charset encoding (default: UTF-8) --encodingmode <MODE> set the charset encod |\n| — | --traceback | — | always print a traceback on exception --time time how long the command takes |\n| — | --profile | — | print command execution profile |\n| — | --version | — | output version information and exit |\n| -h | --help | — | display help and exit |\n| — | --hidden | — | consider hidden changesets --pager <TYPE> when to paginate (boolean, always, auto, or never) (default: auto) [+] marked  |\n\n## See Also\n\n- hgignore(5)\n- hgrc(5)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **SYNOPSIS** (2 lines)\n- **DESCRIPTION** (2 lines)\n- **COMMAND ELEMENTS** (1 lines) — 3 subsections\n  - files... (5 lines)\n  - revision (3 lines)\n  - repository path (2 lines)\n- **OPTIONS** (1 lines) — 11 subsections\n  - -R, (5 lines)\n  - -y, --noninteractive (2 lines)\n  - -q, --quiet (2 lines)\n  - -v, --verbose (8 lines)\n  - --debug (2 lines)\n  - --debugger (8 lines)\n  - --traceback (4 lines)\n  - --profile (2 lines)\n  - --version (2 lines)\n  - -h, --help (2 lines)\n  - --hidden (7 lines)\n- **COMMANDS** (1 lines) — 505 subsections\n  - Repository creation (1 lines)\n  - clone (105 lines)\n  - -U, --noupdate (2 lines)\n  - -u, (2 lines)\n  - -r, (2 lines)\n  - -b, (4 lines)\n  - --uncompressed (2 lines)\n  - --stream (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - init (16 lines)\n  - -e, (5 lines)\n  - --insecure (2 lines)\n  - Remote repository management (1 lines)\n  - incoming (19 lines)\n  - added (2 lines)\n  - advanced (2 lines)\n  - diverged (2 lines)\n  - changed (27 lines)\n  - -f, --force (2 lines)\n  - -n, --newest-first (5 lines)\n  - -r, (2 lines)\n  - -B, --bookmarks (2 lines)\n  - -b, (2 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (2 lines)\n  - -l, (2 lines)\n  - -M, --no-merges (4 lines)\n  - -G, --graph (5 lines)\n  - -T, (2 lines)\n  - -e, (5 lines)\n  - --insecure (2 lines)\n  - -S, --subrepos (6 lines)\n  - outgoing (20 lines)\n  - added (2 lines)\n  - deleted (2 lines)\n  - advanced (2 lines)\n  - diverged (2 lines)\n  - changed (9 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -n, --newest-first (2 lines)\n  - -B, --bookmarks (2 lines)\n  - -b, (2 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (2 lines)\n  - -l, (2 lines)\n  - -M, --no-merges (4 lines)\n  - -G, --graph (5 lines)\n  - -T, (2 lines)\n  - -e, (5 lines)\n  - --insecure (2 lines)\n  - -S, --subrepos (6 lines)\n  - paths (30 lines)\n  - pushurl (8 lines)\n  - -T, (2 lines)\n  - pull (31 lines)\n  - -u, --update (2 lines)\n  - -f, --force (2 lines)\n  - --confirm (2 lines)\n  - -r, (2 lines)\n  - -B, (2 lines)\n  - -b, (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - push (52 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -B, (2 lines)\n  - --all-bookmarks (2 lines)\n  - -b, (2 lines)\n  - --new-branch (5 lines)\n  - --publish (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - serve (23 lines)\n  - -A, (2 lines)\n  - -d, --daemon (5 lines)\n  - -E, (2 lines)\n  - -p, (2 lines)\n  - -a, (5 lines)\n  - -n, (11 lines)\n  - --stdio (5 lines)\n  - -t, (5 lines)\n  - -6, --ipv6 (5 lines)\n  - --print-url (2 lines)\n  - -S, --subrepos (4 lines)\n  - Change creation (1 lines)\n  - commit (50 lines)\n  - -A, --addremove (2 lines)\n  - --close-branch (2 lines)\n  - --amend (2 lines)\n  - -s, --secret (2 lines)\n  - -e, --edit (2 lines)\n  - --force-close-branch (2 lines)\n  - -i, --interactive (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -S, --subrepos (6 lines)\n  - Change manipulation (1 lines)\n  - abort (11 lines)\n  - -n, --dry-run (2 lines)\n  - backout (44 lines)\n  - --merge (2 lines)\n  - --commit (2 lines)\n  - --no-commit (5 lines)\n  - -r, (2 lines)\n  - -e, --edit (2 lines)\n  - -t, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (4 lines)\n  - continue (11 lines)\n  - -n, --dry-run (2 lines)\n  - graft (88 lines)\n  - -r, (5 lines)\n  - -c, --continue (4 lines)\n  - --abort (2 lines)\n  - -e, --edit (4 lines)\n  - --no-commit (2 lines)\n  - -f, --force (2 lines)\n  - -D, --currentdate (2 lines)\n  - -U, --currentuser (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -t, (2 lines)\n  - -n, --dry-run (4 lines)\n  - merge (27 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -P, --preview (2 lines)\n  - --abort (2 lines)\n  - -t, (2 lines)\n  - Change organization (1 lines)\n  - bookmarks (58 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -d, --delete (2 lines)\n  - -m, (2 lines)\n  - -i, --inactive (2 lines)\n  - -l, --list (2 lines)\n  - -T, (4 lines)\n  - branch (26 lines)\n  - -f, --force (2 lines)\n  - -C, --clean (2 lines)\n  - -r, (4 lines)\n  - branches (18 lines)\n  - current (6 lines)\n  - -a, --active (2 lines)\n  - -c, --closed (2 lines)\n  - -r, (2 lines)\n  - -T, (4 lines)\n  - phase (20 lines)\n  - -p, --public (2 lines)\n  - -d, --draft (2 lines)\n  - -s, --secret (2 lines)\n  - -f, --force (2 lines)\n  - -r, (4 lines)\n  - tag (30 lines)\n  - -f, --force (2 lines)\n  - -l, --local (2 lines)\n  - -r, (2 lines)\n  - --remove (2 lines)\n  - -e, --edit (2 lines)\n  - -m, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - tags (19 lines)\n  - -T, (2 lines)\n  - File content management (1 lines)\n  - annotate (39 lines)\n  - -r, (2 lines)\n  - --follow (2 lines)\n  - --no-follow (2 lines)\n  - -a, --text (2 lines)\n  - -u, --user (2 lines)\n  - -f, --file (2 lines)\n  - -d, --date (2 lines)\n  - -n, --number (2 lines)\n  - -c, --changeset (2 lines)\n  - -l, --line-number (5 lines)\n  - -w, --ignore-all-space (2 lines)\n  - -b, --ignore-space-change (2 lines)\n  - -B, --ignore-blank-lines (2 lines)\n  - -Z, --ignore-space-at-eol (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -T, (6 lines)\n  - cat (64 lines)\n  - -o, (2 lines)\n  - -r, (2 lines)\n  - --decode (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -T, (4 lines)\n  - copy (20 lines)\n  - --forget (2 lines)\n  - -A, --after (5 lines)\n  - -f, --force (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (6 lines)\n  - diff (56 lines)\n  - -r, (8 lines)\n  - -c, (2 lines)\n  - -a, --text (2 lines)\n  - -g, --git (2 lines)\n  - --binary (2 lines)\n  - --nodates (2 lines)\n  - --noprefix (2 lines)\n  - -p, --show-function (2 lines)\n  - --reverse (2 lines)\n  - -w, --ignore-all-space (2 lines)\n  - -b, --ignore-space-change (2 lines)\n  - -B, --ignore-blank-lines (2 lines)\n  - -Z, --ignore-space-at-eol (2 lines)\n  - -U, (7 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -S, --subrepos (4 lines)\n  - grep (37 lines)\n  - matched (10 lines)\n  - -0, --print0 (6 lines)\n  - -a, --text (2 lines)\n  - -f, --follow (2 lines)\n  - -i, --ignore-case (2 lines)\n  - -l, --files-with-matches (2 lines)\n  - -n, --line-number (2 lines)\n  - -r, (2 lines)\n  - --all-files (2 lines)\n  - -u, --user (2 lines)\n  - -d, --date (2 lines)\n  - -T, (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - Change navigation (1 lines)\n  - bisect (76 lines)\n  - -r, --reset (2 lines)\n  - -g, --good (2 lines)\n  - -b, --bad (2 lines)\n  - -s, --skip (2 lines)\n  - -e, --extend (2 lines)\n  - -c, (2 lines)\n  - -U, --noupdate (2 lines)\n  - heads (25 lines)\n  - -r, (2 lines)\n  - -t, --topo (2 lines)\n  - -a, --active (2 lines)\n  - -c, --closed (5 lines)\n  - -T, (2 lines)\n  - identify (24 lines)\n  - parents (23 lines)\n  - -r, (2 lines)\n  - -n, --num (2 lines)\n  - -i, --id (2 lines)\n  - -b, --branch (2 lines)\n  - -t, --tags (2 lines)\n  - -B, --bookmarks (2 lines)\n  - -e, (5 lines)\n  - --insecure (2 lines)\n  - -T, (4 lines)\n  - log (107 lines)\n  - -f, --follow (2 lines)\n  - --follow-first (2 lines)\n  - -d, (2 lines)\n  - -C, --copies (2 lines)\n  - -k, (2 lines)\n  - -r, (2 lines)\n  - -L, (2 lines)\n  - --removed (2 lines)\n  - -m, --only-merges (2 lines)\n  - -u, (5 lines)\n  - -b, (2 lines)\n  - -B, (2 lines)\n  - -P, (2 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (2 lines)\n  - -l, (2 lines)\n  - -M, --no-merges (4 lines)\n  - -G, --graph (5 lines)\n  - -T, (2 lines)\n  - -I, (2 lines)\n  - -X, (6 lines)\n  - parents (22 lines)\n  - -r, (5 lines)\n  - -T, (2 lines)\n  - tip (17 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (5 lines)\n  - -T, (2 lines)\n  - Working directory management (1 lines)\n  - add (40 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -S, --subrepos (2 lines)\n  - -n, --dry-run (4 lines)\n  - addremove (58 lines)\n  - -s, (2 lines)\n  - -S, --subrepos (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (4 lines)\n  - files (53 lines)\n  - -r, (2 lines)\n  - -0, --print0 (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -T, (2 lines)\n  - -S, --subrepos (4 lines)\n  - forget (27 lines)\n  - -i, --interactive (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (4 lines)\n  - locate (23 lines)\n  - -r, (2 lines)\n  - -0, --print0 (2 lines)\n  - -f, --fullpath (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - purge (33 lines)\n  - -a, --abort-on-err (4 lines)\n  - -i, --ignored (4 lines)\n  - --files (2 lines)\n  - -p, --print (2 lines)\n  - -0, --print0 (2 lines)\n  - --confirm (2 lines)\n  - -I, (2 lines)\n  - -X, (6 lines)\n  - remove (37 lines)\n  - -A, --after (2 lines)\n  - -f, --force (2 lines)\n  - -S, --subrepos (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (6 lines)\n  - rename (21 lines)\n  - --forget (2 lines)\n  - -A, --after (5 lines)\n  - -f, --force (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (6 lines)\n  - resolve (36 lines)\n  - mergestatus (8 lines)\n  - -a, --all (2 lines)\n  - -l, --list (2 lines)\n  - -m, --mark (2 lines)\n  - -u, --unmark (2 lines)\n  - -n, --no-status (2 lines)\n  - --re-merge (2 lines)\n  - -t, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -T, (4 lines)\n  - revert (29 lines)\n  - -a, --all (2 lines)\n  - -d, (2 lines)\n  - -r, (2 lines)\n  - -C, --no-backup (2 lines)\n  - -i, --interactive (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -n, --dry-run (4 lines)\n  - root (13 lines)\n  - storepath (6 lines)\n  - -T, (2 lines)\n  - shelve (31 lines)\n  - -A, --addremove (2 lines)\n  - -u, --unknown (2 lines)\n  - --cleanup (5 lines)\n  - -d, --delete (2 lines)\n  - -e, --edit (2 lines)\n  - -k, --keep (2 lines)\n  - -l, --list (2 lines)\n  - -m, (2 lines)\n  - -n, (2 lines)\n  - -p, --patch (3 lines)\n  - -i, --interactive (5 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - status (86 lines)\n  - -A, --all (2 lines)\n  - -m, --modified (2 lines)\n  - -a, --added (2 lines)\n  - -r, --removed (2 lines)\n  - -d, --deleted (2 lines)\n  - -c, --clean (2 lines)\n  - -u, --unknown (2 lines)\n  - -i, --ignored (2 lines)\n  - -n, --no-status (2 lines)\n  - -t, (2 lines)\n  - -C, --copies (2 lines)\n  - -0, --print0 (8 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -S, --subrepos (2 lines)\n  - -T, (6 lines)\n  - summary (14 lines)\n  - --remote (4 lines)\n  - unshelve (37 lines)\n  - -a, --abort (2 lines)\n  - -c, --continue (2 lines)\n  - -i, --interactive (2 lines)\n  - -k, --keep (2 lines)\n  - -n, (2 lines)\n  - -t, (5 lines)\n  - update (46 lines)\n  - -C, --clean (2 lines)\n  - -c, --check (2 lines)\n  - -m, --merge (2 lines)\n  - -d, (2 lines)\n  - -r, (2 lines)\n  - -t, (4 lines)\n  - Change import/export (1 lines)\n  - archive (22 lines)\n  - files (2 lines)\n  - tar (2 lines)\n  - tbz2 (2 lines)\n  - tgz (2 lines)\n  - txz (2 lines)\n  - uzip (2 lines)\n  - zip (13 lines)\n  - --no-decode (2 lines)\n  - -p, (2 lines)\n  - -r, (2 lines)\n  - -t, (2 lines)\n  - -S, --subrepos (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - bundle (27 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -b, (5 lines)\n  - -a, --all (2 lines)\n  - -t, (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - export (75 lines)\n  - parents (20 lines)\n  - -B, (2 lines)\n  - -o, (2 lines)\n  - --switch-parent (2 lines)\n  - -r, (2 lines)\n  - -a, --text (2 lines)\n  - -g, --git (2 lines)\n  - --binary (2 lines)\n  - --nodates (2 lines)\n  - -T, (4 lines)\n  - import (84 lines)\n  - -p, (3 lines)\n  - -b, (2 lines)\n  - --secret (2 lines)\n  - -e, --edit (2 lines)\n  - -f, --force (2 lines)\n  - --no-commit (2 lines)\n  - --bypass (2 lines)\n  - --partial (2 lines)\n  - --exact (5 lines)\n  - --import-branch (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -s, (4 lines)\n  - unbundle (10 lines)\n  - -u, --update (2 lines)\n  - Repository maintenance (1 lines)\n  - manifest (18 lines)\n  - -r, (4 lines)\n  - -T, (2 lines)\n  - recover (13 lines)\n  - --verify (2 lines)\n  - rollback (43 lines)\n  - -n, --dry-run (2 lines)\n  - -f, --force (2 lines)\n  - verify (19 lines)\n  - Help (1 lines)\n  - config (38 lines)\n  - -u, --untrusted (2 lines)\n  - --exp-all-known (2 lines)\n  - -e, --edit (2 lines)\n  - -l, --local (2 lines)\n  - --source (2 lines)\n  - --shared (2 lines)\n  - --non-shared (2 lines)\n  - -g, --global (2 lines)\n  - -T, (4 lines)\n  - help (12 lines)\n  - -e, --extension (2 lines)\n  - -c, --command (2 lines)\n  - -k, --keyword (2 lines)\n  - -s, (4 lines)\n  - version (8 lines)\n  - extensions (6 lines)\n  - bundled (6 lines)\n  - -T, (2 lines)\n  - Uncategorized commands (1 lines)\n- **BUNDLE FILE FORMATS** (12 lines) — 12 subsections\n  - compression (2 lines)\n  - parameters (6 lines)\n  - <compression>-<type> (6 lines)\n  - Available Types (23 lines)\n  - Available Compression Engines (2 lines)\n  - bzip2 (10 lines)\n  - gzip (5 lines)\n  - none (4 lines)\n  - Examples (4 lines)\n  - none-v1 (2 lines)\n  - zstd-v2 (2 lines)\n  - zstd-v1 (2 lines)\n- **COLORIZING OUTPUTS** (23 lines) — 4 subsections\n  - Mode (3 lines)\n  - Effects (18 lines)\n  - Labels (69 lines)\n  - Custom colors (13 lines)\n- **DATE FORMATS** (58 lines)\n- **DEPRECATED FEATURES** (4 lines) — 6 subsections\n  - Commands (2 lines)\n  - locate (2 lines)\n  - parents (3 lines)\n  - tip (2 lines)\n  - Options (1 lines)\n  - web.allowpull (6 lines)\n- **DIFF FORMATS** (29 lines)\n- **ENVIRONMENT VARIABLES** (127 lines) — 3 subsections\n  - SAFELY REWRITING HISTORY (EXPERIMENTAL) (20 lines)\n  - Current feature status (2 lines)\n  - Instability (25 lines)\n- **USING ADDITIONAL FEATURES** (110 lines)\n- **SPECIFYING FILE SETS** (17 lines) — 31 subsections\n  - Operators (2 lines)\n  - not x (4 lines)\n  - x and y (2 lines)\n  - x or y (2 lines)\n  - x - y (2 lines)\n  - Predicates (2 lines)\n  - added() (2 lines)\n  - binary() (2 lines)\n  - clean() (2 lines)\n  - copied() (2 lines)\n  - deleted() (2 lines)\n  - encoding(name) (3 lines)\n  - eol(style) (3 lines)\n  - exec() (2 lines)\n  - grep(regex) (2 lines)\n  - hgignore() (2 lines)\n  - ignored() (2 lines)\n  - missing() (2 lines)\n  - modified() (2 lines)\n  - portable() (2 lines)\n  - removed() (2 lines)\n  - resolved() (2 lines)\n  - revs(revs, pattern) (3 lines)\n  - size(expression) (10 lines)\n  - status(base, rev, pattern) (4 lines)\n  - subrepo([pattern]) (2 lines)\n  - symlink() (2 lines)\n  - tracked() (2 lines)\n  - unknown() (2 lines)\n  - unresolved() (2 lines)\n  - Examples (30 lines)\n- **COMMAND-LINE FLAGS** (2 lines) — 11 subsections\n  - Flag names (2 lines)\n  - -v (15 lines)\n  - Flag types (2 lines)\n  - Specifying flag values (5 lines)\n  - -ffoo (2 lines)\n  - Specifying boolean flags (6 lines)\n  - Specifying list flags (4 lines)\n  - Setting flag defaults (7 lines)\n  - Overriding flags on the command line (14 lines)\n  - Overriding flag defaults (4 lines)\n  - Hidden flags (6 lines)\n- **GLOSSARY** (1 lines) — 47 subsections\n  - Ancestor (5 lines)\n  - Bookmark (28 lines)\n  - Branch, anonymous (3 lines)\n  - Branch, closed (2 lines)\n  - Branch, default (2 lines)\n  - Branch head (2 lines)\n  - Branch, inactive (8 lines)\n  - Branch, named (12 lines)\n  - Branch tip (2 lines)\n  - Branch, topological (5 lines)\n  - Changelog (4 lines)\n  - Changeset (2 lines)\n  - Changeset, child (3 lines)\n  - Changeset id (3 lines)\n  - Changeset, merge (2 lines)\n  - Changeset, parent (4 lines)\n  - Checkout (10 lines)\n  - Child changeset (2 lines)\n  - Close changeset (2 lines)\n  - Closed branch (11 lines)\n  - Closed branch head (20 lines)\n  - Deprecated (2 lines)\n  - Default branch (2 lines)\n  - Descendant (17 lines)\n  - Directory, working (10 lines)\n  - Experimental (11 lines)\n  - Head, branch (2 lines)\n  - Head, closed branch (7 lines)\n  - Head, repository (2 lines)\n  - Head, topological (2 lines)\n  - History, immutable (5 lines)\n  - History, rewriting (3 lines)\n  - Immutable history (2 lines)\n  - Merge changeset (2 lines)\n  - Manifest (8 lines)\n  - Named branch (2 lines)\n  - Null changeset (7 lines)\n  - Parent changeset (2 lines)\n  - Parent, working directory (29 lines)\n  - Repository (5 lines)\n  - Repository head (2 lines)\n  - Revision (3 lines)\n  - Revision number (9 lines)\n  - Rewriting history (15 lines)\n  - Tip, branch (14 lines)\n  - Working directory (2 lines)\n  - Working directory parent (2 lines)\n- **SYNTAX FOR MERCURIAL IGNORE FILES** (1 lines) — 8 subsections\n  - Synopsis (3 lines)\n  - Description (24 lines)\n  - Syntax (13 lines)\n  - regexp (2 lines)\n  - glob (2 lines)\n  - rootglob (17 lines)\n  - Example (13 lines)\n  - Debugging (3 lines)\n- **CONFIGURING HGWEB** (46 lines) — 21 subsections\n  - URLs and Common Arguments (22 lines)\n  - Commands and URLs (2 lines)\n  - /annotate/{revision}/{path} (9 lines)\n  - /archive/{revision}.{format}[/{path}] (12 lines)\n  - /bookmarks (6 lines)\n  - /branches (8 lines)\n  - /changelog[/{revision}] (16 lines)\n  - /changeset[/{revision}] (9 lines)\n  - /comparison/{revision}/{path} (10 lines)\n  - /diff/{revision}/{path} (7 lines)\n  - /file/{revision}[/{path}] (11 lines)\n  - /diff/{revision}/{path} (7 lines)\n  - /filelog/{revision}/{path} (7 lines)\n  - /graph[/{revision}] (17 lines)\n  - /help[/{topic}] (8 lines)\n  - /log[/{revision}[/{path}]] (9 lines)\n  - /manifest[/{revision}[/{path}]] (10 lines)\n  - /changeset[/{revision}] (9 lines)\n  - /shortlog (5 lines)\n  - /summary (7 lines)\n  - /tags (6 lines)\n- **TECHNICAL IMPLEMENTATION TOPICS** (44 lines)\n- **MERGE TOOLS** (15 lines) — 15 subsections\n  - Available merge tools (11 lines)\n  - :dump (10 lines)\n  - :fail (5 lines)\n  - :forcedump (4 lines)\n  - :local (4 lines)\n  - :merge (4 lines)\n  - :merge-local (3 lines)\n  - :merge-other (3 lines)\n  - :merge3 (5 lines)\n  - :mergediff (5 lines)\n  - :other (4 lines)\n  - :prompt (5 lines)\n  - :tagmerge (2 lines)\n  - :union (7 lines)\n  - Choosing a merge tool (67 lines)\n- **PAGER SUPPORT** (41 lines)\n- **FILE NAME PATTERNS** (38 lines) — 1 subsections\n  - -I -X (39 lines)\n- **WORKING WITH PHASES** (1 lines) — 4 subsections\n  - What are phases? (16 lines)\n  - How are phases managed? (12 lines)\n  - Phases and servers (29 lines)\n  - Examples (22 lines)\n- **SPECIFYING REVISIONS** (2 lines) — 82 subsections\n  - Specifying single revisions (29 lines)\n  - Specifying multiple revisions (13 lines)\n  - Operators (2 lines)\n  - not x (4 lines)\n  - x::y (6 lines)\n  - x:y (3 lines)\n  - x and y (2 lines)\n  - x or y (3 lines)\n  - x - y (2 lines)\n  - x % y (4 lines)\n  - x^n (3 lines)\n  - x~n (3 lines)\n  - x ## y (19 lines)\n  - Patterns (10 lines)\n  - Predicates (2 lines)\n  - adds(pattern) (5 lines)\n  - all() (9 lines)\n  - ancestors(set[, depth]) (6 lines)\n  - author(string) (2 lines)\n  - bisect(string) (16 lines)\n  - bookmark([name]) (4 lines)\n  - branch(string or set) (4 lines)\n  - branchpoint() (2 lines)\n  - bundle() (4 lines)\n  - children(set) (2 lines)\n  - closed() (2 lines)\n  - commonancestors(set) (2 lines)\n  - conflictlocal() (4 lines)\n  - conflictother() (4 lines)\n  - contains(pattern) (6 lines)\n  - converted([id]) (3 lines)\n  - date(interval) (2 lines)\n  - desc(string) (4 lines)\n  - descendants(set[, depth]) (6 lines)\n  - destination([set]) (4 lines)\n  - diffcontains(pattern) (5 lines)\n  - draft() (2 lines)\n  - expectsize(set[, size]) (6 lines)\n  - extra(label, [value]) (4 lines)\n  - file(pattern) (6 lines)\n  - filelog(pattern) (9 lines)\n  - first(set, [n]) (2 lines)\n  - follow([file[, startrev]]) (4 lines)\n  - followlines(file, fromline:toline[, startrev=., descend=Fals (8 lines)\n  - grep(regex) (3 lines)\n  - head() (2 lines)\n  - heads(set) (2 lines)\n  - hidden() (2 lines)\n  - id(string) (2 lines)\n  - keyword(string) (5 lines)\n  - last(set, [n]) (2 lines)\n  - limit(set[, n[, offset]]) (2 lines)\n  - matching(revision [, field]) (20 lines)\n  - max(set) (2 lines)\n  - merge() (2 lines)\n  - min(set) (2 lines)\n  - modifies(pattern) (5 lines)\n  - named(namespace) (4 lines)\n  - nodefromfile(path) (4 lines)\n  - none() (2 lines)\n  - only(set, [set]) (4 lines)\n  - origin([set]) (5 lines)\n  - outgoing([path]) (6 lines)\n  - p1([set]) (2 lines)\n  - p2([set]) (2 lines)\n  - parents([set]) (2 lines)\n  - present(set) (5 lines)\n  - public() (2 lines)\n  - remote([id [,path]]) (3 lines)\n  - removes(pattern) (5 lines)\n  - rev(number) (2 lines)\n  - reverse(set) (2 lines)\n  - revset(set) (6 lines)\n  - roots(set) (2 lines)\n  - secret() (2 lines)\n  - sort(set[, [-]key... [, ...]]) (23 lines)\n  - subrepo([pattern]) (3 lines)\n  - tag([name]) (4 lines)\n  - user(string) (4 lines)\n  - Aliases (18 lines)\n  - Equivalents (11 lines)\n  - Examples (36 lines)\n- **RUST IN MERCURIAL** (2 lines) — 9 subsections\n  - Compatibility (6 lines)\n  - Features (15 lines)\n  - Checking for Rust (8 lines)\n  - Installing (2 lines)\n  - Using pip (12 lines)\n  - From your distribution (5 lines)\n  - From source (7 lines)\n  - rhg (7 lines)\n  - Contributing (3 lines)\n- **USING MERCURIAL FROM SCRIPTS AND AUTOMATION** (3 lines) — 11 subsections\n  - Choosing an Interface (26 lines)\n  - Environment Variables (37 lines)\n  - Command-line Flags (21 lines)\n  - Consuming Command Output (3 lines)\n  - Parsing Raw Command Output (11 lines)\n  - Using Templates to Control Output (26 lines)\n  - Command Server Output (4 lines)\n  - Output Verbosity (6 lines)\n  - Other Topics (1 lines)\n  - revsets (6 lines)\n  - share extension (10 lines)\n- **SUBREPOSITORIES** (35 lines) — 9 subsections\n  - Adding a Subrepository (5 lines)\n  - Synchronizing a Subrepository (9 lines)\n  - Deleting a Subrepository (3 lines)\n  - Interaction with Mercurial Commands (4 lines)\n  - addremove (5 lines)\n  - archive (27 lines)\n  - incoming (3 lines)\n  - outgoing (28 lines)\n  - Remapping Subrepositories Sources (5 lines)\n- **TEMPLATE USAGE** (17 lines) — 78 subsections\n  - Keywords (10 lines)\n  - activebookmark (6 lines)\n  - bookmarks (5 lines)\n  - changessincelatesttag (2 lines)\n  - children (6 lines)\n  - diffstat (22 lines)\n  - graphnode (2 lines)\n  - graphwidth (4 lines)\n  - latesttag (3 lines)\n  - latesttagdistance (2 lines)\n  - namespaces (7 lines)\n  - onelinesummary (9 lines)\n  - parents (3 lines)\n  - peerurls (5 lines)\n  - reporoot (4 lines)\n  - subrepos (4 lines)\n  - termwidth (4 lines)\n  - verbosity (11 lines)\n  - Filters (2 lines)\n  - addbreaks (5 lines)\n  - basename (6 lines)\n  - commondir (12 lines)\n  - dirname (9 lines)\n  - emailuser (9 lines)\n  - firstline (8 lines)\n  - isodate (2 lines)\n  - isodatesec (7 lines)\n  - nonempty (2 lines)\n  - obfuscate (4 lines)\n  - revescape (4 lines)\n  - rfc3339date (3 lines)\n  - rfc822date (6 lines)\n  - shortbisect (4 lines)\n  - shortdate (2 lines)\n  - slashpath (2 lines)\n  - splitlines (2 lines)\n  - stringify (3 lines)\n  - stripdir (3 lines)\n  - tabindent (5 lines)\n  - urlescape (10 lines)\n  - Functions (2 lines)\n  - config(section, name[, default]) (2 lines)\n  - configbool(section, name[, default]) (2 lines)\n  - configint(section, name[, default]) (2 lines)\n  - date(date[, fmt]) (3 lines)\n  - dict([[key=]value...]) (3 lines)\n  - diff([includepattern [, excludepattern]]) (2 lines)\n  - files(pattern) (2 lines)\n  - fill(text[, width[, initialident[, hangindent]]]) (2 lines)\n  - filter(iterable[, expr]) (3 lines)\n  - get(dict, key) (3 lines)\n  - if(expr, then[, else]) (2 lines)\n  - ifcontains(needle, haystack, then[, else]) (2 lines)\n  - ifeq(expr1, expr2, then[, else]) (2 lines)\n  - indent(text, indentchars[, firstline]) (3 lines)\n  - join(list, sep) (2 lines)\n  - label(label, expr) (3 lines)\n  - latesttag([pattern]) (4 lines)\n  - localdate(date[, tz]) (2 lines)\n  - mailmap(author) (2 lines)\n  - max(iterable) (2 lines)\n  - min(iterable) (2 lines)\n  - mod(a, b) (2 lines)\n  - pad(text, width[, fillchar=' '[, left=False[, truncate=False (2 lines)\n  - relpath(path) (3 lines)\n  - revset(query[, formatargs...]) (2 lines)\n  - rstdoc(text, style) (2 lines)\n  - search(pattern, text) (3 lines)\n  - separate(sep, args...) (2 lines)\n  - shortest(node, minlength=4) (2 lines)\n  - startswith(pattern, text) (3 lines)\n  - strip(text[, chars]) (3 lines)\n  - sub(pattern, replacement, expression) (2 lines)\n  - subsetparents(rev, revset) (2 lines)\n  - word(number, text[, separator]) (2 lines)\n  - Operators (23 lines)\n  - Aliases (44 lines)\n  - Examples (79 lines)\n- **URL PATHS** (55 lines) — 2 subsections\n  - default: (4 lines)\n  - default-push: (12 lines)\n- **EXTENSIONS** (3 lines) — 697 subsections\n  - absorb (18 lines)\n  - Commands (1 lines)\n  - Change creation (1 lines)\n  - absorb (23 lines)\n  - -a, --apply-changes (2 lines)\n  - -p, --print-changes (2 lines)\n  - -i, --interactive (2 lines)\n  - -e, --edit-lines (2 lines)\n  - -n, --dry-run (5 lines)\n  - -T, (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - acl (25 lines)\n  - Branch-based Access Control (15 lines)\n  - Path-based Access Control (4 lines)\n  - Bookmark-based Access Control (19 lines)\n  - Groups (7 lines)\n  - Example Configuration (76 lines)\n  - Examples using the ! prefix (33 lines)\n  - amend (5 lines)\n  - Commands (1 lines)\n  - Change creation (1 lines)\n  - amend (11 lines)\n  - -A, --addremove (2 lines)\n  - -e, --edit (2 lines)\n  - -i, --interactive (2 lines)\n  - --close-branch (2 lines)\n  - -s, --secret (2 lines)\n  - -n, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -D, --currentdate (2 lines)\n  - -U, --currentuser (4 lines)\n  - automv (9 lines)\n  - beautifygraph (4 lines)\n  - blackbox (33 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - blackbox (8 lines)\n  - -l, (2 lines)\n  - bookflow (26 lines)\n  - bugzilla (46 lines)\n  - bugzilla.version (26 lines)\n  - bugzilla.regexp (9 lines)\n  - bugzilla.fixregexp (9 lines)\n  - bugzilla.fixstatus (2 lines)\n  - bugzilla.fixresolution (2 lines)\n  - bugzilla.style (2 lines)\n  - bugzilla.template (22 lines)\n  - bugzilla.strip (5 lines)\n  - web.baseurl (4 lines)\n  - bugzilla.usermap (13 lines)\n  - bugzilla.bzurl (2 lines)\n  - bugzilla.user (2 lines)\n  - bugzilla.password (4 lines)\n  - bugzilla.apikey (5 lines)\n  - bugzilla.bzemail (7 lines)\n  - bugzilla.host (2 lines)\n  - bugzilla.db (2 lines)\n  - bugzilla.user (2 lines)\n  - bugzilla.password (2 lines)\n  - bugzilla.timeout (2 lines)\n  - bugzilla.bzuser (3 lines)\n  - bugzilla.bzdir (2 lines)\n  - bugzilla.notify (86 lines)\n  - censor (21 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - censor (4 lines)\n  - -r, (2 lines)\n  - -t, (2 lines)\n  - children (4 lines)\n  - Commands (1 lines)\n  - Change navigation (1 lines)\n  - children (18 lines)\n  - -r, (5 lines)\n  - -T, (2 lines)\n  - churn (2 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - churn (38 lines)\n  - -r, (2 lines)\n  - -d, (2 lines)\n  - -t, (2 lines)\n  - -T, (2 lines)\n  - -f, (2 lines)\n  - -c, --changesets (2 lines)\n  - -s, --sort (2 lines)\n  - --diffstat (5 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - clonebundles (88 lines)\n  - sions. (94 lines)\n  - closehead (2 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - close-head (11 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -r, (6 lines)\n  - commitextras (2 lines)\n  - convert (2 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - convert (34 lines)\n  - -hg (3 lines)\n  - --branchsort (3 lines)\n  - --datesort (3 lines)\n  - --sourcesort (2 lines)\n  - --closesort (71 lines)\n  - Mercurial Source (3 lines)\n  - convert.hg.ignoreerrors (3 lines)\n  - convert.hg.saverev (3 lines)\n  - convert.hg.startrev (2 lines)\n  - convert.hg.revs (2 lines)\n  - Bazaar Source (2 lines)\n  - convert.bzr.saverev (3 lines)\n  - CVS Source (9 lines)\n  - convert.cvsps.cache (3 lines)\n  - convert.cvsps.fuzz (4 lines)\n  - convert.cvsps.logencoding (5 lines)\n  - convert.cvsps.mergeto (5 lines)\n  - convert.cvsps.mergefrom (5 lines)\n  - convert.localtimezone (3 lines)\n  - hooks.cvslog (4 lines)\n  - hooks.cvschangesets (8 lines)\n  - Subversion Source (10 lines)\n  - convert.svn.branches (2 lines)\n  - convert.svn.tags (2 lines)\n  - convert.svn.trunk (2 lines)\n  - convert.localtimezone (6 lines)\n  - convert.svn.startrev (2 lines)\n  - Git Source (7 lines)\n  - convert.git.similarity (5 lines)\n  - convert.git.findcopiesharder (4 lines)\n  - convert.git.renamelimit (5 lines)\n  - convert.git.committeractions (26 lines)\n  - convert.git.extrakeys (5 lines)\n  - convert.git.remoteprefix (3 lines)\n  - convert.git.saverev (3 lines)\n  - convert.git.skipsubmodules (3 lines)\n  - Perforce Source (7 lines)\n  - convert.p4.encoding (3 lines)\n  - convert.p4.startrev (2 lines)\n  - Mercurial Destination (16 lines)\n  - convert.hg.clonebranches (2 lines)\n  - convert.hg.tagsbranch (2 lines)\n  - convert.hg.usebranchnames (2 lines)\n  - convert.hg.sourcename (3 lines)\n  - convert.hg.preserve-hash (4 lines)\n  - All Destinations (2 lines)\n  - convert.skiptags (2 lines)\n  - Subversion Destination (2 lines)\n  - convert.svn.dangerous-set-commit-dates (14 lines)\n  - -s, (2 lines)\n  - -d, (2 lines)\n  - -r, (2 lines)\n  - -A, (13 lines)\n  - --branchsort (2 lines)\n  - --datesort (2 lines)\n  - --sourcesort (2 lines)\n  - --closesort (4 lines)\n  - eol (72 lines)\n  - extdiff (67 lines)\n  - Commands (1 lines)\n  - File content management (1 lines)\n  - extdiff (26 lines)\n  - -p, (2 lines)\n  - -o, (2 lines)\n  - -r, (8 lines)\n  - -c, (2 lines)\n  - --per-file (2 lines)\n  - --confirm (2 lines)\n  - --patch (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -S, --subrepos (4 lines)\n  - factotum (26 lines)\n  - fastannotate (75 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - fastexport (2 lines)\n  - Commands (1 lines)\n  - Change import/export (1 lines)\n  - fastexport (10 lines)\n  - -r, (2 lines)\n  - -i, (2 lines)\n  - -e, (2 lines)\n  - -A, (4 lines)\n  - fetch (2 lines)\n  - Commands (1 lines)\n  - Remote repository management (1 lines)\n  - fetch (21 lines)\n  - -r, (4 lines)\n  - --force-editor (2 lines)\n  - --switch-parent (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - fix (110 lines)\n  - Commands (1 lines)\n  - File content management (1 lines)\n  - fix (30 lines)\n  - -r, (2 lines)\n  - -s, (2 lines)\n  - -w, --working-dir (2 lines)\n  - --whole (4 lines)\n  - fsmonitor (60 lines)\n  - git (5 lines)\n  - githelp (8 lines)\n  - Commands (1 lines)\n  - Help (1 lines)\n  - githelp (8 lines)\n  - gpg (2 lines)\n  - Commands (1 lines)\n  - Signing changes (GPG) (1 lines)\n  - sigcheck (6 lines)\n  - sign (14 lines)\n  - -l, --local (2 lines)\n  - -f, --force (2 lines)\n  - --no-commit (2 lines)\n  - -k, (2 lines)\n  - -m, (2 lines)\n  - -e, --edit (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - sigs (6 lines)\n  - graphlog (8 lines)\n  - Commands (1 lines)\n  - Change navigation (1 lines)\n  - glog (12 lines)\n  - -f, --follow (2 lines)\n  - --follow-first (2 lines)\n  - -d, (2 lines)\n  - -C, --copies (2 lines)\n  - -k, (2 lines)\n  - -r, (2 lines)\n  - --removed (2 lines)\n  - -m, --only-merges (2 lines)\n  - -u, (5 lines)\n  - -b, (2 lines)\n  - -P, (2 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (2 lines)\n  - -l, (2 lines)\n  - -M, --no-merges (4 lines)\n  - -G, --graph (5 lines)\n  - -T, (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - hgk (25 lines)\n  - Commands (1 lines)\n  - Change navigation (1 lines)\n  - view (8 lines)\n  - -l, (2 lines)\n  - Uncategorized commands (1 lines)\n  - highlight (16 lines)\n  - histedit (133 lines)\n  - Config (35 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - histedit (90 lines)\n  - -c, --continue (2 lines)\n  - --edit-plan (2 lines)\n  - -k, --keep (2 lines)\n  - --abort (2 lines)\n  - -o, --outgoing (2 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -T, (4 lines)\n  - hooklib (12 lines)\n  - infinitepush (58 lines)\n  - journal (5 lines)\n  - Commands (1 lines)\n  - Change organization (1 lines)\n  - journal (25 lines)\n  - -c, --commits (2 lines)\n  - -p, --patch (2 lines)\n  - -g, --git (2 lines)\n  - -l, (7 lines)\n  - -T, (2 lines)\n  - keyword (33 lines)\n  - utcdate (2 lines)\n  - svnutcdate (2 lines)\n  - svnisodate (15 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - kwdemo (15 lines)\n  - -d, --default (2 lines)\n  - -f, (2 lines)\n  - kwexpand (10 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - kwfiles (21 lines)\n  - -A, --all (2 lines)\n  - -i, --ignore (2 lines)\n  - -u, --unknown (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - kwshrink (10 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - largefiles (82 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - lfconvert (19 lines)\n  - -s, (2 lines)\n  - --to-normal (2 lines)\n  - lfpull (22 lines)\n  - -r, (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - lfs (101 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - logtoprocess (77 lines)\n  - Commands (1 lines)\n  - Repository creation (1 lines)\n  - qclone (21 lines)\n  - -U, --noupdate (2 lines)\n  - --uncompressed (2 lines)\n  - -p, (2 lines)\n  - -e, (5 lines)\n  - --insecure (2 lines)\n  - qinit (14 lines)\n  - -c, --create-repo (2 lines)\n  - Change creation (1 lines)\n  - qcommit (8 lines)\n  - -A, --addremove (2 lines)\n  - --close-branch (2 lines)\n  - --amend (2 lines)\n  - -s, --secret (2 lines)\n  - -e, --edit (2 lines)\n  - --force-close-branch (2 lines)\n  - -i, --interactive (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -S, --subrepos (6 lines)\n  - qnew (23 lines)\n  - -e, --edit (2 lines)\n  - -f, --force (2 lines)\n  - -g, --git (2 lines)\n  - -U, --currentuser (2 lines)\n  - -u, (2 lines)\n  - -D, --currentdate (2 lines)\n  - -d, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (4 lines)\n  - qrefresh (22 lines)\n  - -e, --edit (2 lines)\n  - -g, --git (2 lines)\n  - -s, --short (2 lines)\n  - -U, --currentuser (2 lines)\n  - -u, (2 lines)\n  - -D, --currentdate (2 lines)\n  - -d, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (4 lines)\n  - Change manipulation (1 lines)\n  - qfold (16 lines)\n  - -e, --edit (2 lines)\n  - -k, --keep (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - Change organization (1 lines)\n  - qapplied (8 lines)\n  - -1, --last (2 lines)\n  - -s, --summary (2 lines)\n  - qdelete (11 lines)\n  - -k, --keep (2 lines)\n  - -r, (6 lines)\n  - qfinish (18 lines)\n  - -a, --applied (2 lines)\n  - qgoto (8 lines)\n  - --keep-changes (2 lines)\n  - -f, --force (2 lines)\n  - --no-backup (2 lines)\n  - qguard (22 lines)\n  - -l, --list (2 lines)\n  - -n, --none (2 lines)\n  - qheader (6 lines)\n  - qnext (8 lines)\n  - -s, --summary (2 lines)\n  - qpop (15 lines)\n  - -a, --all (2 lines)\n  - -n, (2 lines)\n  - --keep-changes (2 lines)\n  - -f, --force (2 lines)\n  - --no-backup (2 lines)\n  - qprev (8 lines)\n  - -s, --summary (2 lines)\n  - qpush (12 lines)\n  - --keep-changes (2 lines)\n  - -f, --force (2 lines)\n  - -e, --exact (2 lines)\n  - -l, --list (2 lines)\n  - -a, --all (2 lines)\n  - -m, --merge (2 lines)\n  - -n, (4 lines)\n  - --no-backup (2 lines)\n  - qqueue (21 lines)\n  - -l, --list (2 lines)\n  - --active (2 lines)\n  - -c, --create (2 lines)\n  - --rename (2 lines)\n  - --delete (2 lines)\n  - --purge (2 lines)\n  - qrename (11 lines)\n  - qrestore (8 lines)\n  - -d, --delete (2 lines)\n  - -u, --update (2 lines)\n  - qsave (8 lines)\n  - -c, --copy (2 lines)\n  - -n, (2 lines)\n  - -e, --empty (2 lines)\n  - -f, --force (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - qselect (33 lines)\n  - -n, --none (2 lines)\n  - -s, --series (4 lines)\n  - --reapply (2 lines)\n  - qseries (8 lines)\n  - -m, --missing (2 lines)\n  - -s, --summary (2 lines)\n  - qtop (8 lines)\n  - -s, --summary (2 lines)\n  - qunapplied (8 lines)\n  - -1, --first (2 lines)\n  - -s, --summary (2 lines)\n  - File content management (1 lines)\n  - qdiff (16 lines)\n  - -a, --text (2 lines)\n  - -g, --git (2 lines)\n  - --binary (2 lines)\n  - --nodates (2 lines)\n  - --noprefix (2 lines)\n  - -p, --show-function (2 lines)\n  - --reverse (2 lines)\n  - -w, --ignore-all-space (2 lines)\n  - -b, --ignore-space-change (2 lines)\n  - -B, --ignore-blank-lines (2 lines)\n  - -Z, --ignore-space-at-eol (2 lines)\n  - -U, (7 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - Change import/export (1 lines)\n  - qimport (31 lines)\n  - -e, --existing (2 lines)\n  - -n, (2 lines)\n  - -f, --force (2 lines)\n  - -r, (2 lines)\n  - -g, --git (2 lines)\n  - -P, --push (4 lines)\n  - narrow (2 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - tracked (37 lines)\n  - --auto-remove-includes (11 lines)\n  - --clear (2 lines)\n  - --force-delete-local-changes (2 lines)\n  - --backup (2 lines)\n  - --update-working-copy (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - notify (50 lines)\n  - notify.test (2 lines)\n  - notify.sources (25 lines)\n  - notify.strip (5 lines)\n  - notify.domain (3 lines)\n  - notify.messageidseed (3 lines)\n  - notify.style (2 lines)\n  - notify.template (2 lines)\n  - notify.incoming (2 lines)\n  - notify.outgoing (2 lines)\n  - notify.changegroup (2 lines)\n  - notify.maxdiff (3 lines)\n  - notify.maxdiffstat (3 lines)\n  - notify.maxsubject (2 lines)\n  - notify.diffstat (2 lines)\n  - notify.showfunc (2 lines)\n  - notify.merge (2 lines)\n  - notify.mbox (2 lines)\n  - notify.fromauthor (4 lines)\n  - notify.reply-to-predecessor (EXPERIMENTAL) (9 lines)\n  - email.from (2 lines)\n  - web.baseurl (3 lines)\n  - pager (8 lines)\n  - patchbomb (62 lines)\n  - Commands (1 lines)\n  - Change import/export (1 lines)\n  - email (78 lines)\n  - -g, --git (2 lines)\n  - --plain (2 lines)\n  - -o, --outgoing (2 lines)\n  - -b, --bundle (2 lines)\n  - -B, (5 lines)\n  - -r, (2 lines)\n  - --force (5 lines)\n  - --intro (4 lines)\n  - -a, --attach (2 lines)\n  - -i, --inline (5 lines)\n  - -c, (2 lines)\n  - --confirm (2 lines)\n  - -d, --diffstat (8 lines)\n  - -f, (2 lines)\n  - -n, --test (2 lines)\n  - -m, (5 lines)\n  - -s, (8 lines)\n  - -t, (2 lines)\n  - -e, (5 lines)\n  - --insecure (4 lines)\n  - phabricator (50 lines)\n  - Commands (1 lines)\n  - Change import/export (1 lines)\n  - phabimport (10 lines)\n  - --stack (6 lines)\n  - phabread (22 lines)\n  - --stack (6 lines)\n  - phabsend (31 lines)\n  - -r, (2 lines)\n  - --amend (8 lines)\n  - -m, (2 lines)\n  - --confirm (10 lines)\n  - phabupdate (8 lines)\n  - --accept (2 lines)\n  - --reject (2 lines)\n  - --request-review (2 lines)\n  - --abandon (2 lines)\n  - --reclaim (2 lines)\n  - --close (2 lines)\n  - --reopen (2 lines)\n  - --plan-changes (2 lines)\n  - --resign (2 lines)\n  - --commandeer (2 lines)\n  - -m, (2 lines)\n  - -r, (6 lines)\n  - Uncategorized commands (1 lines)\n  - purge (6 lines)\n  - rebase (6 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - rebase (109 lines)\n  - -s, (2 lines)\n  - -b, (2 lines)\n  - -r, (2 lines)\n  - -d, (2 lines)\n  - --collapse (2 lines)\n  - -m, (2 lines)\n  - -e, --edit (2 lines)\n  - -l, (2 lines)\n  - -k, --keep (2 lines)\n  - --keepbranches (2 lines)\n  - -D, --detach (2 lines)\n  - -i, --interactive (2 lines)\n  - -t, (4 lines)\n  - -c, --continue (2 lines)\n  - -a, --abort (5 lines)\n  - -n, --dry-run (2 lines)\n  - -T, (2 lines)\n  - --confirm (4 lines)\n  - record (5 lines)\n  - Commands (1 lines)\n  - Change creation (1 lines)\n  - qrecord (6 lines)\n  - record (30 lines)\n  - -A, --addremove (2 lines)\n  - --close-branch (2 lines)\n  - --amend (2 lines)\n  - -s, --secret (2 lines)\n  - -e, --edit (2 lines)\n  - --force-close-branch (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -S, --subrepos (2 lines)\n  - -w, --ignore-all-space (2 lines)\n  - -b, --ignore-space-change (2 lines)\n  - -B, --ignore-blank-lines (2 lines)\n  - -Z, --ignore-space-at-eol (4 lines)\n  - releasenotes (6 lines)\n  - Commands (1 lines)\n  - Change navigation (1 lines)\n  - releasenotes (83 lines)\n  - -r, (2 lines)\n  - -c, --check (2 lines)\n  - -l, --list (2 lines)\n  - Uncategorized commands (1 lines)\n  - relink (2 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - relink (21 lines)\n  - remotefilelog (141 lines)\n  - Commands (1 lines)\n  - Repository maintenance (1 lines)\n  - prefetch (13 lines)\n  - -r, (2 lines)\n  - --repack (2 lines)\n  - -b, (2 lines)\n  - -I, (2 lines)\n  - -X, (4 lines)\n  - Uncategorized commands (7 lines)\n  - repack (4 lines)\n  - --background (2 lines)\n  - --incremental (2 lines)\n  - --packsonly (2 lines)\n  - verifyremotefilelog (4 lines)\n  - -d, --decompress (2 lines)\n  - remotenames (7 lines)\n  - remotenames.bookmarks (2 lines)\n  - remotenames.branches (2 lines)\n  - remotenames.hoistedpeer (3 lines)\n  - schemes (33 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - share (10 lines)\n  - Automatic Pooled Storage for Clones (7 lines)\n  - share.pool (4 lines)\n  - share.poolnaming (28 lines)\n  - Commands (1 lines)\n  - Repository creation (1 lines)\n  - share (16 lines)\n  - -U, --noupdate (2 lines)\n  - -B, --bookmarks (2 lines)\n  - --relative (2 lines)\n  - Repository maintenance (1 lines)\n  - unshare (6 lines)\n  - show (7 lines)\n  - commands (1 lines)\n  - show.aliasprefix (6 lines)\n  - Commands (1 lines)\n  - Change navigation (1 lines)\n  - show (23 lines)\n  - -T, (2 lines)\n  - sparse (11 lines)\n  - Sparse Config Files (42 lines)\n  - Commands (1 lines)\n  - Uncategorized commands (1 lines)\n  - split (2 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - split (14 lines)\n  - -r, (2 lines)\n  - --rebase (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - sqlitestore (29 lines)\n  - strip (8 lines)\n  - transplant (8 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - transplant (46 lines)\n  - -s, (2 lines)\n  - -b, (2 lines)\n  - -a, --all (2 lines)\n  - -p, (2 lines)\n  - -m, (5 lines)\n  - -e, --edit (6 lines)\n  - -c, --continue (7 lines)\n  - uncommit (6 lines)\n  - Commands (1 lines)\n  - Change manipulation (1 lines)\n  - unamend (8 lines)\n  - uncommit (14 lines)\n  - --allow-dirty-working-copy (2 lines)\n  - -n, (2 lines)\n  - -I, (2 lines)\n  - -X, (2 lines)\n  - -m, (2 lines)\n  - -l, (2 lines)\n  - -d, (2 lines)\n  - -u, (2 lines)\n  - -D, --currentdate (2 lines)\n  - -U, --currentuser (4 lines)\n  - win32mbcs (38 lines)\n  - win32text (32 lines)\n  - zeroconf (15 lines)\n- **FILES** (1 lines) — 7 subsections\n  - /etc/mercurial/hgrc, $HOME/.hgrc, .hg/hgrc (4 lines)\n  - .hgignore (3 lines)\n  - .hgsub (3 lines)\n  - .hgsubstate (3 lines)\n  - .hgtags (4 lines)\n  - .hg/last-message.txt (3 lines)\n  - .hg/localtags (7 lines)\n- **BUGS** (2 lines)\n- **SEE ALSO** (2 lines)\n- **AUTHOR** (8 lines)\n- **RESOURCES** (6 lines)\n- **COPYING** (3 lines)\n\n## Full Content\n\n### NAME\n\nhg - Mercurial source code management system\n\n### SYNOPSIS\n\nhg command [option]... [argument]...\n\n### DESCRIPTION\n\nThe hg command provides a command line interface to the Mercurial system.\n\n### COMMAND ELEMENTS\n\n#### files...\n\nindicates  one or more filename or relative path filenames; see File Name Patterns for\ninformation on pattern matching\n\npath   indicates a path on the local machine\n\n#### revision\n\nindicates a changeset which can be specified as a changeset revision number, a tag, or\na unique substring of the changeset hash value\n\n#### repository path\n\neither the pathname of a local repository or the URI of a remote repository.\n\n### OPTIONS\n\n#### -R,\n\nrepository root directory or name of overlay bundle file\n\n--cwd <DIR>\nchange working directory\n\n#### -y, --noninteractive\n\ndo not prompt, automatically pick the first choice for all prompts\n\n#### -q, --quiet\n\nsuppress output\n\n#### -v, --verbose\n\nenable additional output\n\n--color <TYPE>\nwhen to colorize (boolean, always, auto, never, or debug)\n\n--config <CONFIG[+]>\nset/override config option (use 'section.name=value')\n\n#### --debug\n\nenable debugging output\n\n#### --debugger\n\nstart debugger\n\n--encoding <ENCODE>\nset the charset encoding (default: UTF-8)\n\n--encodingmode <MODE>\nset the charset encoding mode (default: strict)\n\n#### --traceback\n\nalways print a traceback on exception\n\n--time time how long the command takes\n\n#### --profile\n\nprint command execution profile\n\n#### --version\n\noutput version information and exit\n\n#### -h, --help\n\ndisplay help and exit\n\n#### --hidden\n\nconsider hidden changesets\n\n--pager <TYPE>\nwhen to paginate (boolean, always, auto, or never) (default: auto)\n\n[+] marked option can be specified multiple times\n\n### COMMANDS\n\n#### Repository creation\n\n#### clone\n\nmake a copy of an existing repository:\n\nhg clone [OPTION]... SOURCE [DEST]\n\nCreate a copy of an existing repository in a new directory.\n\nIf no destination directory name is specified, it defaults to the basename of the source.\n\nThe  location of the source is added to the new repository's .hg/hgrc file, as the default to\nbe used for future pulls.\n\nOnly local paths and ssh:// URLs are supported as destinations. For ssh://  destinations,  no\nworking directory or .hg/hgrc will be created on the remote side.\n\nIf  the source repository has a bookmark called '@' set, that revision will be checked out in\nthe new repository by default.\n\nTo check out a particular version, use -u/--update, or -U/--noupdate to create a  clone  with\nno working directory.\n\nTo  pull only a subset of changesets, specify one or more revisions identifiers with -r/--rev\nor branches with -b/--branch. The resulting clone will contain only the specified  changesets\nand  their  ancestors.  These  options (or 'clone src#rev dest') imply --pull, even for local\nsource repositories.\n\nIn normal clone mode, the remote normalizes repository data into a common exchange format and\nthe  receiving  end  translates this data into its local storage format. --stream activates a\ndifferent clone mode that essentially copies repository files from the  remote  with  minimal\ndata  processing.  This  significantly  reduces the CPU cost of a clone both remotely and lo‐\ncally.  However, it often increases the transferred data size by 30-40%. This can  result  in\nsubstantially  faster clones where I/O throughput is plentiful, especially for larger reposi‐\ntories. A side-effect of --stream clones is that storage settings and requirements on the re‐\nmote  are  applied locally: a modern client may inherit legacy or inefficient storage used by\nthe remote or a legacy Mercurial client may not be able to clone from a modern Mercurial  re‐\nmote.\n\nNote   Specifying  a  tag  will include the tagged changeset but not the changeset containing\nthe tag.\n\nFor efficiency, hardlinks are used for cloning whenever the source and destination are on the\nsame  filesystem  (note  this  applies only to the repository data, not to the working direc‐\ntory). Some filesystems, such as AFS, implement hardlinking incorrectly, but  do  not  report\nerrors. In these cases, use the --pull option to avoid hardlinking.\n\nMercurial will update the working directory to the first applicable revision from this list:\n\na. null if -U or the source repository has no changesets\n\nb. if  -u  .  and the source repository is local, the first parent of the source repository's\nworking directory\n\nc. the changeset specified with -u (if a branch name, this means  the  latest  head  of  that\nbranch)\n\nd. the changeset specified with -r\n\ne. the tipmost head specified with -b\n\nf. the tipmost head specified with the url#branch source syntax\n\ng. the revision marked with the '@' bookmark, if present\n\nh. the tipmost head of the default branch\n\ni. tip\n\nWhen  cloning  from  servers  that  support it, Mercurial may fetch pre-generated data from a\nserver-advertised URL or inline from the same stream. When this is done, hooks  operating  on\nincoming  changesets  and  changegroups  may fire more than once, once for each pre-generated\nbundle and as well as for any additional remaining data. In addition, if an error occurs, the\nrepository  may  be  rolled  back  to a partial clone. This behavior may change in future re‐\nleases.  See hg help -e clonebundles for more.\n\nExamples:\n\n• clone a remote repository to a new directory named hg/:\n\nhg clone https://www.mercurial-scm.org/repo/hg/\n\n• create a lightweight local clone:\n\nhg clone project/ project-feature/\n\n• clone from an absolute path on an ssh server (note double-slash):\n\nhg clone ssh://user@server//home/projects/alpha/\n\n• do a streaming clone while checking out a specified version:\n\nhg clone --stream http://server/repo -u 1.5\n\n• create a repository without changesets after a particular revision:\n\nhg clone -r 04e544 experimental/ good/\n\n• clone (and track) a particular named branch:\n\nhg clone https://www.mercurial-scm.org/repo/hg/#stable\n\nSee hg help urls for details on specifying URLs.\n\nReturns 0 on success.\n\nOptions:\n\n#### -U, --noupdate\n\nthe clone will include an empty working directory (only a repository)\n\n#### -u,\n\nrevision, tag, or branch to check out\n\n#### -r,\n\ndo not clone everything, but include this changeset and its ancestors\n\n#### -b,\n\ndo not clone everything, but include this branch's changesets and their ancestors\n\n--pull use pull protocol to copy metadata\n\n#### --uncompressed\n\nan alias to --stream (DEPRECATED)\n\n#### --stream\n\nclone with minimal data processing\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### init\n\ncreate a new repository in the given directory:\n\nhg init [-e CMD] [--remotecmd CMD] [DEST]\n\nInitialize a new repository in the given directory. If the given directory does not exist, it\nwill be created.\n\nIf no directory is given, the current directory is used.\n\nIt is possible to specify an ssh:// URL as the destination.  See hg help urls for more infor‐\nmation.\n\nReturns 0 on success.\n\nOptions:\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n#### Remote repository management\n\n#### incoming\n\nshow new changesets found in source:\n\nhg incoming [-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]\n\nShow new changesets found in the specified path/URL or the default pull location.  These  are\nthe changesets that would have been pulled by hg pull at the time you issued this command.\n\nSee pull for valid source format details.\n\nWith  -B/--bookmarks, the result of bookmark comparison between local and remote repositories\nis displayed. With -v/--verbose, status is also displayed for each bookmark like below:\n\nBM1               01234567890a added\nBM2               1234567890ab advanced\nBM3               234567890abc diverged\nBM4               34567890abcd changed\n\nThe action taken locally when pulling depends on the status of each bookmark:\n\n#### added\n\npull will create it\n\n#### advanced\n\npull will update it\n\n#### diverged\n\npull will create a divergent bookmark\n\n#### changed\n\nresult depends on remote changesets\n\nFrom the point of view of pulling behavior, bookmark existing only in the  remote  repository\nare treated as added, even if it is in fact locally deleted.\n\nFor remote repository, using --bundle avoids downloading the changesets twice if the incoming\nis followed by a pull.\n\nExamples:\n\n• show incoming changes with patches and full description:\n\nhg incoming -vp\n\n• show incoming changes excluding merges, store a bundle:\n\nhg in -vpM --bundle incoming.hg\nhg pull incoming.hg\n\n• briefly list changes inside a bundle:\n\nhg in changes.hg -T \"{desc|firstline}\\n\"\n\nReturns 0 if there are incoming changes, 1 otherwise.\n\nOptions:\n\n#### -f, --force\n\nrun even if remote repository is unrelated\n\n#### -n, --newest-first\n\nshow newest record first\n\n--bundle <FILE>\nfile to store the bundles into\n\n#### -r,\n\na remote changeset intended to be added\n\n#### -B, --bookmarks\n\ncompare bookmarks\n\n#### -b,\n\na specific branch you would like to pull\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -l,\n\nlimit number of changes displayed\n\n#### -M, --no-merges\n\ndo not show merges\n\n--stat output diffstat-style summary of changes\n\n#### -G, --graph\n\nshow the revision DAG\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\naliases: in\n\n#### outgoing\n\nshow changesets not found in the destination:\n\nhg outgoing [-M] [-p] [-n] [-f] [-r REV]... [DEST]...\n\nShow changesets not found in the specified destination repository or the default  push  loca‐\ntion. These are the changesets that would be pushed if a push was requested.\n\nSee pull for details of valid destination formats.\n\nWith  -B/--bookmarks, the result of bookmark comparison between local and remote repositories\nis displayed. With -v/--verbose, status is also displayed for each bookmark like below:\n\nBM1               01234567890a added\nBM2                            deleted\nBM3               234567890abc advanced\nBM4               34567890abcd diverged\nBM5               4567890abcde changed\n\nThe action taken when pushing depends on the status of each bookmark:\n\n#### added\n\npush with -B will create it\n\n#### deleted\n\npush with -B will delete it\n\n#### advanced\n\npush will update it\n\n#### diverged\n\npush with -B will update it\n\n#### changed\n\npush with -B will update it\n\nFrom the point of view of pushing behavior, bookmarks existing only in the remote  repository\nare treated as deleted, even if it is in fact added remotely.\n\nReturns 0 if there are outgoing changes, 1 otherwise.\n\nOptions:\n\n#### -f, --force\n\nrun even when the destination is unrelated\n\n#### -r,\n\na changeset intended to be included in the destination\n\n#### -n, --newest-first\n\nshow newest record first\n\n#### -B, --bookmarks\n\ncompare bookmarks\n\n#### -b,\n\na specific branch you would like to push\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -l,\n\nlimit number of changes displayed\n\n#### -M, --no-merges\n\ndo not show merges\n\n--stat output diffstat-style summary of changes\n\n#### -G, --graph\n\nshow the revision DAG\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\naliases: out\n\n#### paths\n\nshow aliases for remote repositories:\n\nhg paths [NAME]\n\nShow  definition  of  symbolic  path  name  NAME. If no name is given, show definition of all\navailable names.\n\nOption -q/--quiet suppresses all output when searching for NAME and shows only the path names\nwhen listing all definitions.\n\nPath  names  are defined in the [paths] section of your configuration file and in /etc/mercu‐‐\nrial/hgrc. If run inside a repository, .hg/hgrc is used, too.\n\nThe path names default and default-push have a special meaning.  When performing  a  push  or\npull  operation,  they are used as fallbacks if no location is specified on the command-line.\nWhen default-push is set, it will be used for push and default will be used for pull;  other‐\nwise  default  is used as the fallback for both.  When cloning a repository, the clone source\nis written as default in .hg/hgrc.\n\nNote   default and default-push apply to all inbound (e.g.  hg incoming) and  outbound  (e.g.\nhg outgoing, hg email and hg bundle) operations.\n\nSee hg help urls for more information.\n\nTemplate:\n\nThe following keywords are supported. See also hg help templates.\n\nname   String. Symbolic name of the path alias.\n\n#### pushurl\n\nString. URL for push operations.\n\nurl    String. URL or directory path for the other operations.\n\nReturns 0 on success.\n\nOptions:\n\n#### -T,\n\ndisplay with template\n\n#### pull\n\npull changes from the specified source:\n\nhg pull [-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]...\n\nPull changes from a remote repository to a local one.\n\nThis  finds  all  changes from the repository at the specified path or URL and adds them to a\nlocal repository (the current one unless -R is specified). By default, this does  not  update\nthe copy of the project in the working directory.\n\nWhen  cloning from servers that support it, Mercurial may fetch pre-generated data. When this\nis done, hooks operating on incoming changesets and changegroups may  fire  more  than  once,\nonce  for  each pre-generated bundle and as well as for any additional remaining data. See hg\nhelp -e clonebundles for more.\n\nUse hg incoming if you want to see what would have been added by a pull at the time  you  is‐\nsued  this command. If you then decide to add those changes to the repository, you should use\nhg pull -r X where X is the last changeset listed by hg incoming.\n\nIf SOURCE is omitted, the 'default' path will be used.  See hg help  urls for  more  informa‐\ntion.\n\nIf multiple sources are specified, they will be pulled sequentially as if the command was run\nmultiple time. If --update is specify and the command will stop at the first failed --update.\n\nSpecifying bookmark as . is equivalent to specifying the active bookmark's name.\n\nReturns 0 on success, 1 if an update had unresolved files.\n\nOptions:\n\n#### -u, --update\n\nupdate to new branch head if new descendants were pulled\n\n#### -f, --force\n\nrun even when remote repository is unrelated\n\n#### --confirm\n\nconfirm pull before applying changes\n\n#### -r,\n\na remote changeset intended to be added\n\n#### -B,\n\nbookmark to pull\n\n#### -b,\n\na specific branch you would like to pull\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### push\n\npush changes to the specified destination:\n\nhg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]...\n\nPush changesets from the local repository to the specified destination.\n\nThis operation is symmetrical to pull: it is identical to a pull in the  destination  reposi‐\ntory from the current one.\n\nBy  default,  push  will  not  allow creation of new heads at the destination, since multiple\nheads would make it unclear which head to use. In this situation, it is recommended  to  pull\nand merge before pushing.\n\nUse  --new-branch  if you want to allow push to create a new named branch that is not present\nat the destination. This allows you to  only  create  a  new  branch  without  forcing  other\nchanges.\n\nNote   Extra  care  should be taken with the -f/--force option, which will push all new heads\non all branches, an action which will almost always cause confusion for collaborators.\n\nIf -r/--rev is used, the specified revision and all its ancestors will be pushed to  the  re‐\nmote repository.\n\nIf  -B/--bookmark is used, the specified bookmarked revision, its ancestors, and the bookmark\nwill be pushed to the remote repository. Specifying . is equivalent to specifying the  active\nbookmark's name. Use the --all-bookmarks option for pushing all current bookmarks.\n\nPlease see hg help urls for important details about ssh:// URLs. If DESTINATION is omitted, a\ndefault path will be used.\n\nWhen passed multiple destinations, push will process them  one  after  the  other,  but  stop\nshould an error occur.\n\nThe --pushvars option sends strings to the server that become environment variables prepended\nwith HGUSERVAR. For example, --pushvars ENABLEFEATURE=true, provides the server side hooks\nwith HGUSERVARENABLEFEATURE=true as part of their environment.\n\npushvars  can  provide for user-overridable hooks as well as set debug levels. One example is\nhaving a hook that blocks commits containing conflict markers, but enables the user to  over‐\nride  the  hook if the file is using conflict markers for testing purposes or the file format\nhas strings that look like conflict markers.\n\nBy default, servers will ignore --pushvars. To enable it add the following to your configura‐\ntion file:\n\n[push]\npushvars.server = true\n\nReturns 0 if push was successful, 1 if nothing to push.\n\nOptions:\n\n#### -f, --force\n\nforce push\n\n#### -r,\n\na changeset intended to be included in the destination\n\n#### -B,\n\nbookmark to push\n\n#### --all-bookmarks\n\npush all bookmarks (EXPERIMENTAL)\n\n#### -b,\n\na specific branch you would like to push\n\n#### --new-branch\n\nallow pushing a new branch\n\n--pushvars <VALUE[+]>\nvariables that can be sent to server (ADVANCED)\n\n#### --publish\n\npush the changeset as public (EXPERIMENTAL)\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### serve\n\nstart stand-alone webserver:\n\nhg serve [OPTION]...\n\nStart  a  local  HTTP repository browser and pull server. You can use this for ad-hoc sharing\nand browsing of repositories. It is recommended to use a real web server to serve  a  reposi‐\ntory for longer periods of time.\n\nPlease  note that the server does not implement access control.  This means that, by default,\nanybody can read from the server and nobody can write to  it  by  default.  Set  the  web.al‐‐\nlow-push  option  to  *  to  allow everybody to push to the server. You should use a real web\nserver if you need to authenticate users.\n\nBy default, the server logs accesses to stdout and errors to stderr. Use  the  -A/--accesslog\nand -E/--errorlog options to log to files.\n\nTo  have  the  server  choose a free port number to listen on, specify a port number of 0; in\nthis case, the server will print the port number it uses.\n\nReturns 0 on success.\n\nOptions:\n\n#### -A,\n\nname of access log file to write to\n\n#### -d, --daemon\n\nrun server in background\n\n--daemon-postexec <VALUE[+]>\nused internally by daemon mode\n\n#### -E,\n\nname of error log file to write to\n\n#### -p,\n\nport to listen on (default: 8000)\n\n#### -a,\n\naddress to listen on (default: all interfaces)\n\n--prefix <PREFIX>\nprefix path to serve from (default: server root)\n\n#### -n,\n\nname to show in web pages (default: working directory)\n\n--web-conf <FILE>\nname of the hgweb config file (see 'hg help hgweb')\n\n--webdir-conf <FILE>\nname of the hgweb config file (DEPRECATED)\n\n--pid-file <FILE>\nname of file to write process ID to\n\n#### --stdio\n\nfor remote clients (ADVANCED)\n\n--cmdserver <MODE>\nfor remote clients (ADVANCED)\n\n#### -t,\n\nweb templates to use\n\n--style <STYLE>\ntemplate style to use\n\n#### -6, --ipv6\n\nuse IPv6 in addition to IPv4\n\n--certificate <FILE>\nSSL certificate file\n\n#### --print-url\n\nstart and print only the URL\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\n#### Change creation\n\n#### commit\n\ncommit the specified files or all outstanding changes:\n\nhg commit [OPTION]... [FILE]...\n\nCommit changes to the given files into the repository. Unlike a centralized SCM, this  opera‐\ntion is a local operation. See hg push for a way to actively distribute your changes.\n\nIf a list of files is omitted, all changes reported by hg status will be committed.\n\nIf you are committing the result of a merge, do not provide any filenames or -I/-X filters.\n\nIf  no commit message is specified, Mercurial starts your configured editor where you can en‐\nter a message. In case your commit  fails,  you  will  find  a  backup  of  your  message  in\n.hg/last-message.txt.\n\nThe --close-branch flag can be used to mark the current branch head closed. When all heads of\na branch are closed, the branch will be considered closed and no longer listed.\n\nThe --amend flag can be used to amend the parent of the working directory with a  new  commit\nthat contains the changes in the parent in addition to those currently reported by hg status,\nif there are any. The old commit is stored in a backup bundle  in  .hg/strip-backup  (see  hg\nhelp bundle and hg help unbundle on how to restore it).\n\nMessage,  user  and  date  are taken from the amended commit unless specified. When a message\nisn't specified on the command line, the editor will open with the  message  of  the  amended\ncommit.\n\nIt  is  not  possible to amend public changesets (see hg help phases) or changesets that have\nchildren.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nReturns 0 on success, 1 if nothing changed.\n\nExamples:\n\n• commit all files ending in .py:\n\nhg commit --include \"set:.py\"\n\n• commit all non-binary files:\n\nhg commit --exclude \"set:binary()\"\n\n• amend the current commit and set the date to now:\n\nhg commit --amend --date now\n\nOptions:\n\n#### -A, --addremove\n\nmark new/missing files as added/removed before committing\n\n#### --close-branch\n\nmark a branch head as closed\n\n#### --amend\n\namend the parent of the working directory\n\n#### -s, --secret\n\nuse the secret phase for committing\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### --force-close-branch\n\nforcibly close branch from a non-head changeset (ADVANCED)\n\n#### -i, --interactive\n\nuse interactive mode\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\naliases: ci\n\n#### Change manipulation\n\n#### abort\n\nabort an unfinished operation (EXPERIMENTAL):\n\nhg abort\n\nAborts a multistep operation like graft, histedit, rebase, merge, and unshelve if they are in\nan unfinished state.\n\nuse --dry-run/-n to dry run the command.\n\nOptions:\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n#### backout\n\nreverse effect of earlier changeset:\n\nhg backout [OPTION]... [-r] REV\n\nPrepare a new changeset with the effect of REV undone in the current working directory. If no\nconflicts were encountered, it will be committed immediately.\n\nIf REV is the parent of the working directory, then this new changeset is committed automati‐\ncally (unless --no-commit is specified).\n\nNote   hg backout cannot be used to fix either an unwanted or incorrect merge.\n\nExamples:\n\n• Reverse  the effect of the parent of the working directory.  This backout will be committed\nimmediately:\n\nhg backout -r .\n\n• Reverse the effect of previous bad revision 23:\n\nhg backout -r 23\n\n• Reverse the effect of previous bad revision 23 and leave changes uncommitted:\n\nhg backout -r 23 --no-commit\nhg commit -m \"Backout revision 23\"\n\nBy default, the pending changeset will have one parent, maintaining a  linear  history.  With\n--merge,  the  pending changeset will instead have two parents: the old parent of the working\ndirectory and a new child of REV that simply undoes REV.\n\nBefore version 1.7, the behavior without --merge was equivalent to  specifying  --merge  fol‐\nlowed  by  hg update --clean . to cancel the merge and leave the child of REV as a head to be\nmerged separately.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nSee hg help revert for a way to restore files to the state of another revision.\n\nReturns 0 on success, 1 if nothing to backout or there are unresolved files.\n\nOptions:\n\n#### --merge\n\nmerge with old dirstate parent after backout\n\n#### --commit\n\ncommit if no conflicts were encountered (DEPRECATED)\n\n#### --no-commit\n\ndo not commit\n\n--parent <REV>\nparent to choose when backing out merge (DEPRECATED)\n\n#### -r,\n\nrevision to backout\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -t,\n\nspecify merge tool\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n[+] marked option can be specified multiple times\n\n#### continue\n\nresumes an interrupted operation (EXPERIMENTAL):\n\nhg continue\n\nFinishes a multistep operation like graft, histedit, rebase, merge, and unshelve if they  are\nin an interrupted state.\n\nuse --dry-run/-n to dry run the command.\n\nOptions:\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n#### graft\n\ncopy changes from other branches onto the current branch:\n\nhg graft [OPTION]... [-r REV]... REV...\n\nThis  command  uses  Mercurial's  merge  logic to copy individual changes from other branches\nwithout merging branches in the history graph. This is sometimes known  as  'backporting'  or\n'cherry-picking'.  By  default,  graft  will copy user, date, and description from the source\nchangesets.\n\nChangesets that are ancestors of the current revision, that have  already  been  grafted,  or\nthat are merges will be skipped.\n\nIf --log is specified, log messages will have a comment appended of the form:\n\n(grafted from CHANGESETHASH)\n\nIf  --force is specified, revisions will be grafted even if they are already ancestors of, or\nhave been grafted to, the destination.  This is useful when the  revisions  have  since  been\nbacked out.\n\nIf  a  graft merge results in conflicts, the graft process is interrupted so that the current\nmerge can be manually resolved.  Once all conflicts are addressed, the graft process  can  be\ncontinued with the -c/--continue option.\n\nThe -c/--continue option reapplies all the earlier options.\n\nThe  --base  option  exposes more of how graft internally uses merge with a custom base revi‐\nsion. --base can be used to specify another ancestor than the first and only parent.\n\nThe command:\n\nhg graft -r 345 --base 234\n\nis thus pretty much the same as:\n\nhg diff --from 234 --to 345 | hg import\n\nbut using merge to resolve conflicts and track moved files.\n\nThe result of a merge can thus be backported as a single commit  by  specifying  one  of  the\nmerge parents as base, and thus effectively grafting the changes from the other side.\n\nIt  is  also  possible to collapse multiple changesets and clean up history by specifying an‐\nother ancestor as base, much like rebase --collapse --keep.\n\nThe commit message can be tweaked after the fact using commit --amend .\n\nFor using non-ancestors as the base to backout changes, see the backout command and the  hid‐\nden --parent option.\n\nExamples:\n\n• copy a single change to the stable branch and edit its description:\n\nhg update stable\nhg graft --edit 9393\n\n• graft a range of changesets with one exception, updating dates:\n\nhg graft -D \"2085::2093 and not 2091\"\n\n• continue a graft after resolving conflicts:\n\nhg graft -c\n\n• show the source of a grafted changeset:\n\nhg log --debug -r .\n\n• show revisions sorted by date:\n\nhg log -r \"sort(all(), date)\"\n\n• backport the result of a merge as a single commit:\n\nhg graft -r 123 --base 123^\n\n• land a feature branch as one changeset:\n\nhg up -cr default\nhg graft -r featureX --base \"ancestor('featureX', 'default')\"\n\nSee hg help revisions for more about specifying revisions.\n\nReturns 0 on successful completion, 1 if there are unresolved files.\n\nOptions:\n\n#### -r,\n\nrevisions to graft\n\n--base <REV>\nbase revision when doing the graft merge (ADVANCED)\n\n#### -c, --continue\n\nresume interrupted graft\n\n--stop stop interrupted graft\n\n#### --abort\n\nabort interrupted graft\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n--log  append graft info to log message\n\n#### --no-commit\n\ndon't commit, just apply the changes in working directory\n\n#### -f, --force\n\nforce graft\n\n#### -D, --currentdate\n\nrecord the current date as commit date\n\n#### -U, --currentuser\n\nrecord the current user as committer\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -t,\n\nspecify merge tool\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\n#### merge\n\nmerge another revision into working directory:\n\nhg merge [-P] [[-r] REV]\n\nThe  current  working  directory  is  updated with all changes made in the requested revision\nsince the last common predecessor revision.\n\nFiles that changed between either parent are marked as changed for the next commit and a com‐\nmit must be performed before any further updates to the repository are allowed. The next com‐\nmit will have two parents.\n\n--tool can be used to specify the merge tool used for file merges. It overrides  the  HGMERGE\nenvironment variable and your configuration files. See hg help merge-tools for options.\n\nIf  no revision is specified, the working directory's parent is a head revision, and the cur‐\nrent branch contains exactly one other head, the other head is merged with by default. Other‐\nwise, an explicit revision with which to merge must be provided.\n\nSee hg help resolve for information on handling file conflicts.\n\nTo  undo  an uncommitted merge, use hg merge --abort which will check out a clean copy of the\noriginal merge parent, losing all changes.\n\nReturns 0 on success, 1 if there are unresolved files.\n\nOptions:\n\n#### -f, --force\n\nforce a merge including outstanding changes (DEPRECATED)\n\n#### -r,\n\nrevision to merge\n\n#### -P, --preview\n\nreview revisions to merge (no merge is performed)\n\n#### --abort\n\nabort the ongoing merge\n\n#### -t,\n\nspecify merge tool\n\n#### Change organization\n\n#### bookmarks\n\ncreate a new bookmark or list existing bookmarks:\n\nhg bookmarks [OPTIONS]... [NAME]...\n\nBookmarks are labels on changesets to help track lines of development.  Bookmarks are  unver‐\nsioned and can be moved, renamed and deleted.  Deleting or moving a bookmark has no effect on\nthe associated changesets.\n\nCreating or updating to a bookmark causes it to be marked as 'active'.  The  active  bookmark\nis  indicated with a '*'.  When a commit is made, the active bookmark will advance to the new\ncommit.  A plain hg update will also advance an active bookmark, if possible.  Updating  away\nfrom a bookmark will cause it to be deactivated.\n\nBookmarks  can be pushed and pulled between repositories (see hg help push and hg help pull).\nIf a shared bookmark has diverged, a new 'divergent bookmark' of the form 'name@path' will be\ncreated. Using hg merge will resolve the divergence.\n\nSpecifying  bookmark  as '.' to -m/-d/-l options is equivalent to specifying the active book‐\nmark's name.\n\nA bookmark named '@' has the special property that hg clone will check it out by  default  if\nit exists.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions such as {bookmark}. See also hg help templates.\n\nactive Boolean. True if the bookmark is active.\n\nExamples:\n\n• create an active bookmark for a new line of development:\n\nhg book new-feature\n\n• create an inactive bookmark as a place marker:\n\nhg book -i reviewed\n\n• create an inactive bookmark on another changeset:\n\nhg book -r .^ tested\n\n• rename bookmark turkey to dinner:\n\nhg book -m turkey dinner\n\n• move the '@' bookmark from another branch:\n\nhg book -f @\n\n• print only the active bookmark name:\n\nhg book -ql .\n\nOptions:\n\n#### -f, --force\n\nforce\n\n#### -r,\n\nrevision for bookmark action\n\n#### -d, --delete\n\ndelete a given bookmark\n\n#### -m,\n\nrename a given bookmark\n\n#### -i, --inactive\n\nmark a bookmark inactive\n\n#### -l, --list\n\nlist existing bookmarks\n\n#### -T,\n\ndisplay with template\n\naliases: bookmark\n\n#### branch\n\nset or show the current branch name:\n\nhg branch [-fC] [NAME]\n\nNote   Branch names are permanent and global. Use hg bookmark to create a light-weight  book‐\nmark instead. See hg help glossary for more information about named branches and book‐\nmarks.\n\nWith no argument, show the current branch name. With one argument, set the working  directory\nbranch  name  (the  branch  will not exist in the repository until the next commit). Standard\npractice recommends that primary development take place on the 'default' branch.\n\nUnless -f/--force is specified, branch will not let you set a branch name  that  already  ex‐\nists.\n\nUse -C/--clean to reset the working directory branch to that of the parent of the working di‐\nrectory, negating a previous branch change.\n\nUse the command hg update to switch to an existing branch. Use  hg  commit  --close-branch to\nmark  this  branch head as closed.  When all heads of a branch are closed, the branch will be\nconsidered closed.\n\nReturns 0 on success.\n\nOptions:\n\n#### -f, --force\n\nset branch name even if it shadows an existing branch\n\n#### -C, --clean\n\nreset branch name to parent branch name\n\n#### -r,\n\nchange branches of the given revs (EXPERIMENTAL)\n\n[+] marked option can be specified multiple times\n\n#### branches\n\nlist repository named branches:\n\nhg branches [-c]\n\nList the repository's named branches, indicating which ones are inactive. If  -c/--closed  is\nspecified, also list branches which have been marked closed (see hg commit --close-branch).\n\nUse the command hg update to switch to an existing branch.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions such as {branch}. See also hg help templates.\n\nactive Boolean. True if the branch is active.\n\nclosed Boolean. True if the branch is closed.\n\n#### current\n\nBoolean. True if it is the current branch.\n\nReturns 0.\n\nOptions:\n\n#### -a, --active\n\nshow only branches that have unmerged heads (DEPRECATED)\n\n#### -c, --closed\n\nshow normal and closed branches\n\n#### -r,\n\nshow branch name(s) of the given rev\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\n#### phase\n\nset or show the current phase name:\n\nhg phase [-p|-d|-s] [-f] [-r] [REV...]\n\nWith no argument, show the phase name of the current revision(s).\n\nWith one of -p/--public, -d/--draft or -s/--secret, change the phase value of  the  specified\nrevisions.\n\nUnless -f/--force is specified, hg phase won't move changesets from a lower phase to a higher\nphase. Phases are ordered as follows:\n\npublic < draft < secret\n\nReturns 0 on success, 1 if some phases could not be changed.\n\n(For more information about the phases concept, see hg help phases.)\n\nOptions:\n\n#### -p, --public\n\nset changeset phase to public\n\n#### -d, --draft\n\nset changeset phase to draft\n\n#### -s, --secret\n\nset changeset phase to secret\n\n#### -f, --force\n\nallow to move boundary backward\n\n#### -r,\n\ntarget revision\n\n[+] marked option can be specified multiple times\n\n#### tag\n\nadd one or more tags for the current or given revision:\n\nhg tag [-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...\n\nName a particular revision using <name>.\n\nTags are used to name particular revisions of the repository and are very useful  to  compare\ndifferent  revisions,  to go back to significant earlier versions or to mark branch points as\nreleases, etc. Changing an existing tag is normally disallowed; use -f/--force to override.\n\nIf no revision is given, the parent of the working directory is used.\n\nTo facilitate version control, distribution, and merging of tags, they are stored as  a  file\nnamed  \".hgtags\"  which is managed similarly to other project files and can be hand-edited if\nnecessary. This also means that tagging creates a new commit.  The  file  \".hg/localtags\"  is\nused for local tags (not shared among repositories).\n\nTag  commits are usually made at the head of a branch. If the parent of the working directory\nis not a branch head, hg tag aborts; use -f/--force to force the tag commit to be based on  a\nnon-head changeset.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nSince  tag  names  have  priority over branch names during revision lookup, using an existing\nbranch name as a tag name is discouraged.\n\nReturns 0 on success.\n\nOptions:\n\n#### -f, --force\n\nforce tag\n\n#### -l, --local\n\nmake the tag local\n\n#### -r,\n\nrevision to tag\n\n#### --remove\n\nremove a tag\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -m,\n\nuse text as commit message\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### tags\n\nlist repository tags:\n\nhg tags\n\nThis lists both regular and local tags. When the -v/--verbose switch is used, a third  column\n\"local\"  is printed for local tags.  When the -q/--quiet switch is used, only the tag name is\nprinted.\n\nTemplate:\n\nThe following keywords are supported in addition to the common template  keywords  and  func‐\ntions such as {tag}. See also hg help templates.\n\ntype   String. local for local tags.\n\nReturns 0 on success.\n\nOptions:\n\n#### -T,\n\ndisplay with template\n\n#### File content management\n\n#### annotate\n\nshow changeset information by line for each file:\n\nhg annotate [-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...\n\nList changes in files, showing the revision id responsible for each line.\n\nThis command is useful for discovering when a change was made and by whom.\n\nIf  you  include --file, --user, or --date, the revision number is suppressed unless you also\ninclude --number.\n\nWithout the -a/--text option, annotate will avoid processing files it detects as binary. With\n-a,  annotate  will  annotate  the file anyway, although the results will probably be neither\nuseful nor desirable.\n\nTemplate:\n\nThe following keywords are supported in addition to the common template  keywords  and  func‐\ntions. See also hg help templates.\n\nlines  List of lines with annotation data.\n\npath   String. Repository-absolute path of the specified file.\n\nAnd  each entry of {lines} provides the following sub-keywords in addition to {date}, {node},\n{rev}, {user}, etc.\n\nline   String. Line content.\n\nlineno Integer. Line number at that revision.\n\npath   String. Repository-absolute path of the file at that revision.\n\nSee hg help templates.operators for the list expansion syntax.\n\nReturns 0 on success.\n\nOptions:\n\n#### -r,\n\nannotate the specified revision\n\n#### --follow\n\nfollow copies/renames and list the filename (DEPRECATED)\n\n#### --no-follow\n\ndon't follow copies and renames\n\n#### -a, --text\n\ntreat all files as text\n\n#### -u, --user\n\nlist the author (long with -v)\n\n#### -f, --file\n\nlist the filename\n\n#### -d, --date\n\nlist the date (short with -q)\n\n#### -n, --number\n\nlist the revision number (default)\n\n#### -c, --changeset\n\nlist the changeset\n\n#### -l, --line-number\n\nshow line number at the first appearance\n\n--skip <REV[+]>\nrevset to not display (EXPERIMENTAL)\n\n#### -w, --ignore-all-space\n\nignore white space when comparing lines\n\n#### -b, --ignore-space-change\n\nignore changes in the amount of white space\n\n#### -B, --ignore-blank-lines\n\nignore changes whose lines are all blank\n\n#### -Z, --ignore-space-at-eol\n\nignore changes in whitespace at EOL\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\naliases: blame\n\n#### cat\n\noutput the current or given revision of files:\n\nhg cat [OPTION]... FILE...\n\nPrint the specified files as they were at the given revision. If no revision  is  given,  the\nparent of the working directory is used.\n\nOutput may be to a file, in which case the name of the file is given using a template string.\nSee hg help templates. In addition to the common template keywords, the following  formatting\nrules are supported:\n\n%%\n\nliteral \"%\" character\n\n%s\n\nbasename of file being printed\n\n%d\n\ndirname of file being printed, or '.' if in repository root\n\n%p\n\nroot-relative path name of file being printed\n\n%H\n\nchangeset hash (40 hexadecimal digits)\n\n%R\n\nchangeset revision number\n\n%h\n\nshort-form changeset hash (12 hexadecimal digits)\n\n%r\n\nzero-padded changeset revision number\n\n%b\n\nbasename of the exporting repository\n\n\\\n\nliteral \"\" character\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\ndata   String. File content.\n\npath   String. Repository-absolute path of the file.\n\nReturns 0 on success.\n\nOptions:\n\n#### -o,\n\nprint output to file with formatted name\n\n#### -r,\n\nprint the given revision\n\n#### --decode\n\napply any matching decode filter\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\n#### copy\n\nmark files as copied for the next commit:\n\nhg copy [OPTION]... (SOURCE... DEST | --forget DEST...)\n\nMark dest as having copies of source files. If dest is a directory, copies are  put  in  that\ndirectory. If dest is a file, the source must be a single file.\n\nBy default, this command copies the contents of files as they exist in the working directory.\nIf invoked with -A/--after, the operation is recorded, but no copying is performed.\n\nTo undo marking a destination file as copied, use --forget. With that option, all given  (po‐\nsitional)  arguments  are  unmarked  as copies. The destination file(s) will be left in place\n(still tracked). Note that hg copy --forget behaves the same way as hg rename --forget.\n\nThis command takes effect with the next commit by default.\n\nReturns 0 on success, 1 if errors are encountered.\n\nOptions:\n\n#### --forget\n\nunmark a destination file as copied\n\n#### -A, --after\n\nrecord a copy that has already occurred\n\n--at-rev <REV>\n(un)mark copies in the given revision (EXPERIMENTAL)\n\n#### -f, --force\n\nforcibly copy over an existing managed file\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\naliases: cp\n\n#### diff\n\ndiff repository (or selected files):\n\nhg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...\n\nShow differences between revisions for the specified files.\n\nDifferences between files are shown using the unified diff format.\n\nNote   hg diff may generate unexpected results for merges, as it will  default  to  comparing\nagainst the working directory's first parent changeset if no revisions are specified.\n\nBy  default, the working directory files are compared to its first parent. To see the differ‐\nences from another revision, use --from. To see the difference to another revision, use --to.\nFor  example, hg diff --from .^ will show the differences from the working copy's grandparent\nto the working copy, hg diff --to . will show the diff from the working copy  to  its  parent\n(i.e. the reverse of the default), and hg diff --from 1.0 --to 1.2 will show the diff between\nthose two revisions.\n\nAlternatively you can specify -c/--change with a revision to see the changes in that  change‐\nset relative to its first parent (i.e. hg diff -c 42 is equivalent to hg diff --from 42^ --to\n42)\n\nWithout the -a/--text option, diff will avoid generating diffs of files it detects as binary.\nWith -a, diff will generate a diff anyway, probably with undesirable results.\n\nUse  the -g/--git option to generate diffs in the git extended diff format. For more informa‐\ntion, read hg help diffs.\n\nExamples:\n\n• compare a file in the current working directory to its parent:\n\nhg diff foo.c\n\n• compare two historical versions of a directory, with rename info:\n\nhg diff --git --from 1.0 --to 1.2 lib/\n\n• get change stats relative to the last change on some date:\n\nhg diff --stat --from \"date('may 2')\"\n\n• diff all newly-added files that contain a keyword:\n\nhg diff \"set:added() and grep(GNU)\"\n\n• compare a revision and its parents:\n\nhg diff -c 9353                  # compare against first parent\nhg diff --from 9353^ --to 9353   # same using revset syntax\nhg diff --from 9353^2 --to 9353  # compare against the second parent\n\nReturns 0 on success.\n\nOptions:\n\n#### -r,\n\nrevision (DEPRECATED)\n\n--from <REV1>\nrevision to diff from\n\n--to <REV2>\nrevision to diff to\n\n#### -c,\n\nchange made by revision\n\n#### -a, --text\n\ntreat all files as text\n\n#### -g, --git\n\nuse git extended diff format (DEFAULT: diff.git)\n\n#### --binary\n\ngenerate binary diffs in git mode (default)\n\n#### --nodates\n\nomit dates from diff headers\n\n#### --noprefix\n\nomit a/ and b/ prefixes from filenames\n\n#### -p, --show-function\n\nshow which function each change is in (DEFAULT: diff.showfunc)\n\n#### --reverse\n\nproduce a diff that undoes the changes\n\n#### -w, --ignore-all-space\n\nignore white space when comparing lines\n\n#### -b, --ignore-space-change\n\nignore changes in the amount of white space\n\n#### -B, --ignore-blank-lines\n\nignore changes whose lines are all blank\n\n#### -Z, --ignore-space-at-eol\n\nignore changes in whitespace at EOL\n\n#### -U,\n\nnumber of lines of context to show\n\n--stat output diffstat-style summary of changes\n\n--root <DIR>\nproduce diffs relative to subdirectory\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\n#### grep\n\nsearch for a pattern in specified files:\n\nhg grep [--diff] [OPTION]... PATTERN [FILE]...\n\nSearch the working directory or revision history for a regular expression  in  the  specified\nfiles for the entire repository.\n\nBy  default, grep searches the repository files in the working directory and prints the files\nwhere it finds a match. To specify historical revisions instead of the working directory, use\nthe --rev flag.\n\nTo search instead historical revision differences that contains a change in match status (\"-\"\nfor a match that becomes a non-match, or \"+\" for a non-match that becomes a match),  use  the\n--diff flag.\n\nPATTERN can be any Python (roughly Perl-compatible) regular expression.\n\nIf  no FILEs are specified and the --rev flag isn't supplied, all files in the working direc‐\ntory are searched. When using the --rev flag and specifying FILEs, use the --follow  argument\nto also follow the specified FILEs across renames and copies.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\nchange String. Character denoting insertion + or removal -.  Available if  --diff  is  speci‐\nfied.\n\nlineno Integer. Line number of the match.\n\npath   String. Repository-absolute path of the file.\n\ntexts  List of text chunks.\n\nAnd each entry of {texts} provides the following sub-keywords.\n\n#### matched\n\nBoolean. True if the chunk matches the specified pattern.\n\ntext   String. Chunk content.\n\nSee hg help templates.operators for the list expansion syntax.\n\nReturns 0 if a match is found, 1 otherwise.\n\nOptions:\n\n#### -0, --print0\n\nend fields with NUL\n\n--all  an alias to --diff (DEPRECATED)\n\n--diff search revision differences for when the pattern was added or removed\n\n#### -a, --text\n\ntreat all files as text\n\n#### -f, --follow\n\nfollow changeset history, or file history across copies and renames\n\n#### -i, --ignore-case\n\nignore case when matching\n\n#### -l, --files-with-matches\n\nprint only filenames and revisions that match\n\n#### -n, --line-number\n\nprint matching line numbers\n\n#### -r,\n\nsearch files changed within revision range\n\n#### --all-files\n\ninclude all files in the changeset while grepping (DEPRECATED)\n\n#### -u, --user\n\nlist the author (long with -v)\n\n#### -d, --date\n\nlist the date (short with -q)\n\n#### -T,\n\ndisplay with template\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### Change navigation\n\n#### bisect\n\nsubdivision search of changesets:\n\nhg bisect [-gbsr] [-U] [-c CMD] [REV]\n\nThis  command  helps  to  find changesets which introduce problems. To use, mark the earliest\nchangeset you know exhibits the problem as bad, then mark the latest changeset which is  free\nfrom the problem as good. Bisect will update your working directory to a revision for testing\n(unless the -U/--noupdate option is specified). Once you have performed tests, mark the work‐\ning directory as good or bad, and bisect will either update to another candidate changeset or\nannounce that it has found the bad revision.\n\nAs a shortcut, you can also use the revision argument to mark a revision as good or bad with‐\nout checking it out first.\n\nIf  you  supply a command, it will be used for automatic bisection.  The environment variable\nHGNODE will contain the ID of the changeset being tested. The exit  status  of  the  command\nwill be used to mark revisions as good or bad: status 0 means good, 125 means to skip the re‐\nvision, 127 (command not found) will abort the bisection, and any other non-zero exit  status\nmeans the revision is bad.\n\nSome examples:\n\n• start a bisection with known bad revision 34, and good revision 12:\n\nhg bisect --bad 34\nhg bisect --good 12\n\n• advance the current bisection by marking current revision as good or bad:\n\nhg bisect --good\nhg bisect --bad\n\n• mark the current revision, or a known revision, to be skipped (e.g. if that revision is not\nusable because of another issue):\n\nhg bisect --skip\nhg bisect --skip 23\n\n• skip all revisions that do not touch directories foo or bar:\n\nhg bisect --skip \"!( file('path:foo') & file('path:bar') )\"\n\n• forget the current bisection:\n\nhg bisect --reset\n\n• use 'make && make tests' to automatically find the first broken revision:\n\nhg bisect --reset\nhg bisect --bad 34\nhg bisect --good 12\nhg bisect --command \"make && make tests\"\n\n• see all changesets whose states are already known in the current bisection:\n\nhg log -r \"bisect(pruned)\"\n\n• see the changeset currently being bisected (especially useful if  running  with  -U/--noup‐\ndate):\n\nhg log -r \"bisect(current)\"\n\n• see all changesets that took part in the current bisection:\n\nhg log -r \"bisect(range)\"\n\n• you can even get a nice graph:\n\nhg log --graph -r \"bisect(range)\"\n\nSee hg help revisions.bisect for more about the bisect() predicate.\n\nReturns 0 on success.\n\nOptions:\n\n#### -r, --reset\n\nreset bisect state\n\n#### -g, --good\n\nmark changeset good\n\n#### -b, --bad\n\nmark changeset bad\n\n#### -s, --skip\n\nskip testing changeset\n\n#### -e, --extend\n\nextend the bisect range\n\n#### -c,\n\nuse command to check changeset state\n\n#### -U, --noupdate\n\ndo not update to target\n\n#### heads\n\nshow branch heads:\n\nhg heads [-ct] [-r STARTREV] [REV]...\n\nWith no arguments, show all open branch heads in the repository.  Branch heads are changesets\nthat have no descendants on the same branch. They are where development generally takes place\nand are the usual targets for update and merge operations.\n\nIf  one  or  more  REVs are given, only open branch heads on the branches associated with the\nspecified changesets are shown. This means that you can use hg heads . to see  the  heads  on\nthe currently checked-out branch.\n\nIf   -c/--closed  is  specified,  also  show  branch  heads  marked  closed  (see  hg  commit\n--close-branch).\n\nIf STARTREV is specified, only those heads that are descendants  of  STARTREV  will  be  dis‐\nplayed.\n\nIf  -t/--topo is specified, named branch mechanics will be ignored and only topological heads\n(changesets with no children) will be shown.\n\nReturns 0 if matching heads are found, 1 if not.\n\nOptions:\n\n#### -r,\n\nshow only heads which are descendants of STARTREV\n\n#### -t, --topo\n\nshow topological heads only\n\n#### -a, --active\n\nshow active branchheads only (DEPRECATED)\n\n#### -c, --closed\n\nshow normal and closed branch heads\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### identify\n\nidentify the working directory or specified revision:\n\nhg identify [-nibtB] [-r REV] [SOURCE]\n\nPrint a summary identifying the repository state at REV using one or two parent hash  identi‐\nfiers,  followed  by  a \"+\" if the working directory has uncommitted changes, the branch name\n(if not default), a list of tags, and a list of bookmarks.\n\nWhen REV is not given, print a summary of the current state of the repository  including  the\nworking  directory.  Specify  -r.  to get information of the working directory parent without\nscanning uncommitted changes.\n\nSpecifying a path to a repository root or Mercurial bundle will cause lookup  to  operate  on\nthat repository/bundle.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\ndirty  String. Character + denoting if the working directory has uncommitted changes.\n\nid     String. One or two nodes, optionally followed by +.\n\n#### parents\n\nList of strings. Parent nodes of the changeset.\n\nExamples:\n\n• generate a build identifier for the working directory:\n\nhg id --id > build-id.dat\n\n• find the revision corresponding to a tag:\n\nhg id -n -r 1.3\n\n• check the most recent revision of a remote repository:\n\nhg id -r tip https://www.mercurial-scm.org/repo/hg/\n\nSee hg log for generating more information about  specific  revisions,  including  full  hash\nidentifiers.\n\nReturns 0 if successful.\n\nOptions:\n\n#### -r,\n\nidentify the specified revision\n\n#### -n, --num\n\nshow local revision number\n\n#### -i, --id\n\nshow global revision id\n\n#### -b, --branch\n\nshow branch\n\n#### -t, --tags\n\nshow tags\n\n#### -B, --bookmarks\n\nshow bookmarks\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n#### -T,\n\ndisplay with template\n\naliases: id\n\n#### log\n\nshow revision history of entire repository or files:\n\nhg log [OPTION]... [FILE]\n\nPrint the revision history of the specified files or the entire project.\n\nIf no revision range is specified, the default is tip:0 unless --follow is set.\n\nFile history is shown without following rename or copy history of files. Use -f/--follow with\na filename to follow history across renames and copies. --follow without a filename will only\nshow  ancestors  of  the  starting  revisions.  The  starting  revisions  can be specified by\n-r/--rev, which default to the working directory parent.\n\nBy default this command prints revision number and changeset id, tags,  non-trivial  parents,\nuser, date and time, and a summary for each commit. When the -v/--verbose switch is used, the\nlist of changed files and full commit message are shown.\n\nWith --graph the revisions are shown as an ASCII art DAG with the most  recent  changeset  at\nthe  top.  'o' is a changeset, '@' is a working directory parent, '%' is a changeset involved\nin an unresolved merge conflict, '' closes a branch, 'x' is obsolete, '*' is  unstable,  and\n'+'  represents  a fork where the changeset from the lines below is a parent of the 'o' merge\non the same line.  Paths in the DAG are represented with '|', '/' and so forth. ':' in  place\nof a '|' indicates one or more revisions in a path are omitted.\n\nUse -L/--line-range FILE,M:N options to follow the history of lines from M to N in FILE. With\n-p/--patch only diff hunks affecting specified line range will be shown. This option requires\n--follow;  it  can be specified multiple times. Currently, this option is not compatible with\n--graph. This option is experimental.\n\nNote   hg log --patch may generate unexpected diff output for merge changesets,  as  it  will\nonly  compare the merge changeset against its first parent. Also, only files different\nfrom BOTH parents will appear in files:.\n\nNote   For performance reasons, hg log FILE may omit duplicate changes made on  branches  and\nwill  not  show  removals  or mode changes. To see all such changes, use the --removed\nswitch.\n\nNote   The history resulting from -L/--line-range options depends on diff  options;  for  in‐\nstance if white-spaces are ignored, respective changes with only white-spaces in spec‐\nified line range will not be listed.\n\nSome examples:\n\n• changesets with full descriptions and file lists:\n\nhg log -v\n\n• changesets ancestral to the working directory:\n\nhg log -f\n\n• last 10 commits on the current branch:\n\nhg log -l 10 -b .\n\n• changesets showing all modifications of a file, including removals:\n\nhg log --removed file.c\n\n• all changesets that touch a directory, with diffs, excluding merges:\n\nhg log -Mp lib/\n\n• all revision numbers that match a keyword:\n\nhg log -k bug --template \"{rev}\\n\"\n\n• the full hash identifier of the working directory parent:\n\nhg log -r . --template \"{node}\\n\"\n\n• list available log templates:\n\nhg log -T list\n\n• check if a given changeset is included in a tagged release:\n\nhg log -r \"a21ccf and ancestor(1.9)\"\n\n• find all changesets by some user in a date range:\n\nhg log -k alice -d \"may 2008 to jul 2008\"\n\n• summary of all changesets after the last tag:\n\nhg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\"\n\n• changesets touching lines 13 to 23 for file.c:\n\nhg log -L file.c,13:23\n\n• changesets touching lines 13 to 23 for file.c and lines 2 to 6 of main.c with patch:\n\nhg log -L file.c,13:23 -L main.c,2:6 -p\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nSee hg help revisions for more about specifying and ordering revisions.\n\nSee hg help templates for more about pre-packaged styles and specifying custom templates. The\ndefault template used by the log command can be customized via the command-templates.log con‐\nfiguration setting.\n\nReturns 0 on success.\n\nOptions:\n\n#### -f, --follow\n\nfollow changeset history, or file history across copies and renames\n\n#### --follow-first\n\nonly follow the first parent of merge changesets (DEPRECATED)\n\n#### -d,\n\nshow revisions matching date spec\n\n#### -C, --copies\n\nshow copied files\n\n#### -k,\n\ndo case-insensitive search for a given text\n\n#### -r,\n\nrevisions to select or follow from\n\n#### -L,\n\nfollow line range of specified file (EXPERIMENTAL)\n\n#### --removed\n\ninclude revisions where files were removed\n\n#### -m, --only-merges\n\nshow only merges (DEPRECATED) (use -r \"merge()\" instead)\n\n#### -u,\n\nrevisions committed by user\n\n--only-branch <BRANCH[+]>\nshow only changesets within the given named branch (DEPRECATED)\n\n#### -b,\n\nshow changesets within the given named branch\n\n#### -B,\n\nshow changesets within the given bookmark\n\n#### -P,\n\ndo not display revision or any of its ancestors\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -l,\n\nlimit number of changes displayed\n\n#### -M, --no-merges\n\ndo not show merges\n\n--stat output diffstat-style summary of changes\n\n#### -G, --graph\n\nshow the revision DAG\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\naliases: history\n\n#### parents\n\nshow the parents of the working directory or revision (DEPRECATED):\n\nhg parents [-r REV] [FILE]\n\nPrint the working directory's parent revisions. If a revision is given via -r/--rev, the par‐\nent of that revision will be printed.  If a file argument is given, the revision in which the\nfile was last changed (before the working directory revision or  the  argument  to  --rev  if\ngiven) is printed.\n\nThis command is equivalent to:\n\nhg log -r \"p1()+p2()\" or\nhg log -r \"p1(REV)+p2(REV)\" or\nhg log -r \"max(::p1() and file(FILE))+max(::p2() and file(FILE))\" or\nhg log -r \"max(::p1(REV) and file(FILE))+max(::p2(REV) and file(FILE))\"\n\nSee hg summary and hg help revsets for related information.\n\nReturns 0 on success.\n\nOptions:\n\n#### -r,\n\nshow parents of the specified revision\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### tip\n\nshow the tip revision (DEPRECATED):\n\nhg tip [-p] [-g]\n\nThe  tip  revision  (usually just called the tip) is the changeset most recently added to the\nrepository (and therefore the most recently changed head).\n\nIf you have just made a commit, that commit will be the tip. If you have just pulled  changes\nfrom another repository, the tip of that repository becomes the current tip. The \"tip\" tag is\nspecial and cannot be renamed or assigned to a different changeset.\n\nThis command is deprecated, please use hg heads instead.\n\nReturns 0 on success.\n\nOptions:\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### Working directory management\n\n#### add\n\nadd the specified files on the next commit:\n\nhg add [OPTION]... [FILE]...\n\nSchedule files to be version controlled and added to the repository.\n\nThe files will be added to the repository at the next commit. To undo an add before that, see\nhg forget.\n\nIf no names are given, add all files to the repository (except files matching .hgignore).\n\nExamples:\n\n• New (unknown) files are added automatically by hg add:\n\n$ ls\nfoo.c\n$ hg status\n? foo.c\n$ hg add\nadding foo.c\n$ hg status\nA foo.c\n\n• Specific files to be added can be specified:\n\n$ ls\nbar.c  foo.c\n$ hg status\n? bar.c\n? foo.c\n$ hg add bar.c\n$ hg status\nA bar.c\n? foo.c\n\nReturns 0 if all files are successfully added.\n\nOptions:\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\n#### addremove\n\nadd all new files, delete all missing files:\n\nhg addremove [OPTION]... [FILE]...\n\nAdd all new files and remove all missing files from the repository.\n\nUnless names are given, new files are ignored if they match any of the patterns in .hgignore.\nAs with add, these changes take effect at the next commit.\n\nUse the -s/--similarity option to detect renamed files. This option takes  a  percentage  be‐\ntween  0  (disabled)  and  100  (files  must be identical) as its parameter. With a parameter\ngreater than 0, this compares every removed file with every added file and records those sim‐\nilar  enough  as renames. Detecting renamed files this way can be expensive. After using this\noption, hg status -C can be used to check which files were identified as moved or renamed. If\nnot  specified,  -s/--similarity  defaults to 100 and only renames of identical files are de‐\ntected.\n\nExamples:\n\n• A number of files (bar.c and foo.c) are new, while foobar.c has  been  removed  (without\nusing hg remove) from the repository:\n\n$ ls\nbar.c foo.c\n$ hg status\n! foobar.c\n? bar.c\n? foo.c\n$ hg addremove\nadding bar.c\nadding foo.c\nremoving foobar.c\n$ hg status\nA bar.c\nA foo.c\nR foobar.c\n\n• A  file  foobar.c was moved to foo.c without using hg rename.  Afterwards, it was edited\nslightly:\n\n$ ls\nfoo.c\n$ hg status\n! foobar.c\n? foo.c\n$ hg addremove --similarity 90\nremoving foobar.c\nadding foo.c\nrecording removal of foobar.c as rename to foo.c (94% similar)\n$ hg status -C\nA foo.c\nfoobar.c\nR foobar.c\n\nReturns 0 if all files are successfully added.\n\nOptions:\n\n#### -s,\n\nguess renamed files by similarity (0<=s<=100)\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\n#### files\n\nlist tracked files:\n\nhg files [OPTION]... [FILE]...\n\nPrint files under Mercurial control in the working directory or specified revision for  given\nfiles (excluding removed files).  Files can be specified as filenames or filesets.\n\nIf  no  files  are given to match, this command prints the names of all files under Mercurial\ncontrol.\n\nTemplate:\n\nThe following keywords are supported in addition to the common template  keywords  and  func‐\ntions. See also hg help templates.\n\nflags  String. Character denoting file's symlink and executable bits.\n\npath   String. Repository-absolute path of the file.\n\nsize   Integer. Size of the file in bytes.\n\nExamples:\n\n• list all files under the current directory:\n\nhg files .\n\n• shows sizes and flags for current revision:\n\nhg files -vr .\n\n• list all files named README:\n\nhg files -I \"/README\"\n\n• list all binary files:\n\nhg files \"set:binary()\"\n\n• find files containing a regular expression:\n\nhg files \"set:grep('bob')\"\n\n• search tracked file contents with xargs and grep:\n\nhg files -0 | xargs -0 grep foo\n\nSee hg help patterns and hg help filesets for more information on specifying file patterns.\n\nReturns 0 if a match is found, 1 otherwise.\n\nOptions:\n\n#### -r,\n\nsearch the repository as it is in REV\n\n#### -0, --print0\n\nend filenames with NUL, for use with xargs\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -T,\n\ndisplay with template\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\n#### forget\n\nforget the specified files on the next commit:\n\nhg forget [OPTION]... FILE...\n\nMark the specified files so they will no longer be tracked after the next commit.\n\nThis  only removes files from the current branch, not from the entire project history, and it\ndoes not delete them from the working directory.\n\nTo delete the file from the working directory, see hg remove.\n\nTo undo a forget before the next commit, see hg add.\n\nExamples:\n\n• forget newly-added binary files:\n\nhg forget \"set:added() and binary()\"\n\n• forget files that would be excluded by .hgignore:\n\nhg forget \"set:hgignore()\"\n\nReturns 0 on success.\n\nOptions:\n\n#### -i, --interactive\n\nuse interactive mode\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\n#### locate\n\nlocate files matching specific patterns (DEPRECATED):\n\nhg locate [OPTION]... [PATTERN]...\n\nPrint files under Mercurial control in the working directory whose names match the given pat‐\nterns.\n\nBy  default,  this  command searches all directories in the working directory. To search just\nthe current directory and its subdirectories, use \"--include .\".\n\nIf no patterns are given to match, this command prints the names of all files under Mercurial\ncontrol in the working directory.\n\nIf you want to feed the output of this command into the \"xargs\" command, use the -0 option to\nboth this command and \"xargs\". This will avoid the problem of \"xargs\" treating  single  file‐\nnames that contain whitespace as multiple filenames.\n\nSee hg help files for a more versatile command.\n\nReturns 0 if a match is found, 1 otherwise.\n\nOptions:\n\n#### -r,\n\nsearch the repository as it is in REV\n\n#### -0, --print0\n\nend filenames with NUL, for use with xargs\n\n#### -f, --fullpath\n\nprint complete paths from the filesystem root\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### purge\n\nremoves files not tracked by Mercurial:\n\nhg purge [OPTION]... [DIR]...\n\nDelete  files not known to Mercurial. This is useful to test local and uncommitted changes in\nan otherwise-clean source tree.\n\nThis means that purge will delete the following by default:\n\n• Unknown files: files marked with \"?\" by hg status\n\n• Empty directories: in fact Mercurial ignores directories unless they  contain  files  under\nsource control management\n\nBut it will leave untouched:\n\n• Modified and unmodified tracked files\n\n• Ignored files (unless -i or --all is specified)\n\n• New files added to the repository (with hg add)\n\nThe  --files and --dirs options can be used to direct purge to delete only files, only direc‐\ntories, or both. If neither option is given, both will be deleted.\n\nIf directories are given on the command line, only files in these directories are considered.\n\nBe careful with purge, as you could irreversibly delete some files you forgot to add  to  the\nrepository.  If  you only want to print the list of files that this program would delete, use\nthe --print option.\n\nOptions:\n\n#### -a, --abort-on-err\n\nabort if an error occurs\n\n--all  purge ignored files too\n\n#### -i, --ignored\n\npurge only ignored files\n\n--dirs purge empty directories\n\n#### --files\n\npurge files\n\n#### -p, --print\n\nprint filenames instead of deleting them\n\n#### -0, --print0\n\nend filenames with NUL, for use with xargs (implies -p/--print)\n\n#### --confirm\n\nask before permanently deleting files\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\naliases: clean\n\n#### remove\n\nremove the specified files on the next commit:\n\nhg remove [OPTION]... FILE...\n\nSchedule the indicated files for removal from the current branch.\n\nThis command schedules the files to be removed at the next commit.  To undo a  remove  before\nthat, see hg revert. To undo added files, see hg forget.\n\n-A/--after can be used to remove only files that have already been deleted, -f/--force can be\nused to force deletion, and -Af can be used to remove files from the  next  revision  without\ndeleting them from the working directory.\n\nThe  following  table  details the behavior of remove for different file states (columns) and\noption combinations (rows). The file states are Added [A], Clean [C], Modified [M] and  Miss‐\ning  [!]   (as  reported by hg status). The actions are Warn, Remove (from branch) and Delete\n(from disk):\n\n┌──────────┬───┬────┬────┬───┐\n│opt/state │ A │ C  │ M  │ ! │\n├──────────┼───┼────┼────┼───┤\n│none      │ W │ RD │ W  │ R │\n├──────────┼───┼────┼────┼───┤\n│-f        │ R │ RD │ RD │ R │\n├──────────┼───┼────┼────┼───┤\n│-A        │ W │ W  │ W  │ R │\n├──────────┼───┼────┼────┼───┤\n│-Af       │ R │ R  │ R  │ R │\n└──────────┴───┴────┴────┴───┘\n\nNote   hg remove never deletes files in Added [A] state from the working directory, not  even\nif --force is specified.\n\nReturns 0 on success, 1 if any warnings encountered.\n\nOptions:\n\n#### -A, --after\n\nrecord delete for missing files\n\n#### -f, --force\n\nforget added files, delete modified files\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\naliases: rm\n\n#### rename\n\nrename files; equivalent of copy + remove:\n\nhg rename [OPTION]... SOURCE... DEST\n\nMark dest as copies of sources; mark sources for deletion. If dest is a directory, copies are\nput in that directory. If dest is a file, there can only be one source.\n\nBy default, this command copies the contents of files as they exist in the working directory.\nIf invoked with -A/--after, the operation is recorded, but no copying is performed.\n\nTo undo marking a destination file as renamed, use --forget. With that option, all given (po‐\nsitional) arguments are unmarked as renames. The destination file(s) will be  left  in  place\n(still  tracked).  The  source file(s) will not be restored. Note that hg rename --forget be‐\nhaves the same way as hg copy --forget.\n\nThis command takes effect with the next commit by default.\n\nReturns 0 on success, 1 if errors are encountered.\n\nOptions:\n\n#### --forget\n\nunmark a destination file as renamed\n\n#### -A, --after\n\nrecord a rename that has already occurred\n\n--at-rev <REV>\n(un)mark renames in the given revision (EXPERIMENTAL)\n\n#### -f, --force\n\nforcibly move over an existing managed file\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\naliases: move mv\n\n#### resolve\n\nredo merges or set/view the merge status of files:\n\nhg resolve [OPTION]... [FILE]...\n\nMerges with unresolved conflicts are often the result of non-interactive  merging  using  the\ninternal:merge  configuration  setting,  or a command-line merge tool like diff3. The resolve\ncommand is used to manage the files involved in a merge, after hg merge has been run, and be‐\nfore  hg  commit is  run  (i.e.  the  working  directory  must have two parents). See hg help\nmerge-tools for information on configuring merge tools.\n\nThe resolve command can be used in the following ways:\n\n• hg resolve [--re-merge] [--tool TOOL] FILE...: attempt to  re-merge  the  specified  files,\ndiscarding  any  previous  merge  attempts.  Re-merging  is not performed for files already\nmarked as resolved. Use --all/-a to select all unresolved files.  --tool  can  be  used  to\nspecify the merge tool used for the given files. It overrides the HGMERGE environment vari‐\nable and your configuration files.  Previous file contents are saved with a .orig suffix.\n\n• hg resolve -m [FILE]: mark a file as having  been  resolved  (e.g.  after  having  manually\nfixed-up the files). The default is to mark all unresolved files.\n\n• hg  resolve  -u  [FILE]...:  mark a file as unresolved. The default is to mark all resolved\nfiles.\n\n• hg resolve -l: list files which had or still have conflicts.  In the printed list, U =  un‐\nresolved  and  R  = resolved.  You can use set:unresolved() or set:resolved() to filter the\nlist. See hg help filesets for details.\n\nNote   Mercurial will not let you commit files with unresolved merge conflicts. You must  use\nhg resolve -m ... before you can commit after a conflicting merge.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\n#### mergestatus\n\nString. Character denoting merge conflicts, U or R.\n\npath   String. Repository-absolute path of the file.\n\nReturns 0 on success, 1 if any files fail a resolve attempt.\n\nOptions:\n\n#### -a, --all\n\nselect all unresolved files\n\n#### -l, --list\n\nlist state of files needing merge\n\n#### -m, --mark\n\nmark files as resolved\n\n#### -u, --unmark\n\nmark files as unresolved\n\n#### -n, --no-status\n\nhide status prefix\n\n#### --re-merge\n\nre-merge files\n\n#### -t,\n\nspecify merge tool\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\n#### revert\n\nrestore files to their checkout state:\n\nhg revert [OPTION]... [-r REV] [NAME]...\n\nNote   To check out earlier revisions, you should use hg update REV.  To cancel an  uncommit‐\nted merge (and lose your changes), use hg merge --abort.\n\nWith  no  revision  specified, revert the specified files or directories to the contents they\nhad in the parent of the working directory.  This restores the contents of files to an unmod‐\nified  state and unschedules adds, removes, copies, and renames. If the working directory has\ntwo parents, you must explicitly specify a revision.\n\nUsing the -r/--rev or -d/--date options, revert the  given  files  or  directories  to  their\nstates  as  of a specific revision. Because revert does not change the working directory par‐\nents, this will cause these files to appear modified. This can be helpful to \"back out\"  some\nor all of an earlier change. See hg backout for a related method.\n\nModified files are saved with a .orig suffix before reverting.  To disable these backups, use\n--no-backup. It is possible to store the backup files in a custom directory relative  to  the\nroot of the repository by setting the ui.origbackuppath configuration option.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nSee hg help backout for a way to reverse the effect of an earlier changeset.\n\nReturns 0 on success.\n\nOptions:\n\n#### -a, --all\n\nrevert all changes when no arguments given\n\n#### -d,\n\ntipmost revision matching date\n\n#### -r,\n\nrevert to the specified revision\n\n#### -C, --no-backup\n\ndo not save backup copies of files\n\n#### -i, --interactive\n\ninteractively select the changes\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n[+] marked option can be specified multiple times\n\n#### root\n\nprint the root (top) of the current working directory:\n\nhg root\n\nPrint the root directory of the current repository.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\nhgpath String. Path to the .hg directory.\n\n#### storepath\n\nString. Path to the directory holding versioned data.\n\nReturns 0 on success.\n\nOptions:\n\n#### -T,\n\ndisplay with template\n\n#### shelve\n\nsave and set aside changes from the working directory:\n\nhg shelve [OPTION]... [FILE]...\n\nShelving takes files that \"hg status\" reports as not clean, saves the modifications to a bun‐\ndle  (a  shelved  change), and reverts the files so that their state in the working directory\nbecomes clean.\n\nTo restore these changes to the working directory, using \"hg unshelve\"; this will  work  even\nif you switch to a different commit.\n\nWhen  no files are specified, \"hg shelve\" saves all not-clean files. If specific files or di‐\nrectories are named, only changes to those files are shelved.\n\nIn bare shelve (when no files are specified, without interactive,  include  and  exclude  op‐\ntion),  shelving  remembers information if the working directory was on newly created branch,\nin other words working directory was on different branch than its first parent. In this situ‐\nation unshelving restores branch information to the working directory.\n\nEach  shelved  change  has  a name that makes it easier to find later.  The name of a shelved\nchange defaults to being based on the active bookmark, or if there is no active bookmark, the\ncurrent named branch.  To specify a different name, use --name.\n\nTo  see  a  list of existing shelved changes, use the --list option. For each shelved change,\nthis will print its name, age, and description; use --patch or --stat for more details.\n\nTo delete specific shelved  changes,  use  --delete.  To  delete  all  shelved  changes,  use\n--cleanup.\n\nOptions:\n\n#### -A, --addremove\n\nmark new/missing files as added/removed before shelving\n\n#### -u, --unknown\n\nstore unknown files in the shelve\n\n#### --cleanup\n\ndelete all shelved changes\n\n--date <DATE>\nshelve with the specified commit date\n\n#### -d, --delete\n\ndelete the named shelved change(s)\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -k, --keep\n\nshelve, but keep changes in the working directory\n\n#### -l, --list\n\nlist current shelves\n\n#### -m,\n\nuse text as shelve message\n\n#### -n,\n\nuse the given name for the shelved commit\n\n#### -p, --patch\n\noutput patches for changes (provide the names of the shelved changes as positional ar‐\nguments)\n\n#### -i, --interactive\n\ninteractive mode\n\n--stat output diffstat-style summary of changes (provide the names of the shelved changes  as\npositional arguments)\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### status\n\nshow changed files in the working directory:\n\nhg status [OPTION]... [FILE]...\n\nShow  status of files in the repository. If names are given, only files that match are shown.\nFiles that are clean or ignored or the source of a copy/move operation, are not listed unless\n-c/--clean,  -i/--ignored,  -C/--copies or -A/--all are given.  Unless options described with\n\"show only ...\" are given, the options -mardu are used.\n\nOption -q/--quiet hides untracked (unknown and ignored)  files  unless  explicitly  requested\nwith -u/--unknown or -i/--ignored.\n\nNote   hg  status may appear to disagree with diff if permissions have changed or a merge has\noccurred. The standard diff format does not report permission changes  and  diff  only\nreports changes relative to one merge parent.\n\nIf  one  revision is given, it is used as the base revision.  If two revisions are given, the\ndifferences between them are shown. The --change option can also be used  as  a  shortcut  to\nlist the changed files of a revision from its first parent.\n\nThe codes used to show the status of files are:\n\nM = modified\nA = added\nR = removed\nC = clean\n! = missing (deleted by non-hg command, but still tracked)\n? = not tracked\nI = ignored\n= origin of the previous file (with --copies)\n\nThe  -t/--terse  option  abbreviates the output by showing only the directory name if all the\nfiles in it share the same status. The option takes an argument indicating  the  statuses  to\nabbreviate:  'm'  for  'modified', 'a' for 'added', 'r' for 'removed', 'd' for 'deleted', 'u'\nfor 'unknown', 'i' for 'ignored' and 'c' for clean.\n\nIt abbreviates only those statuses which are passed. Note that clean and  ignored  files  are\nnot displayed with '--terse ic' unless the -c/--clean and -i/--ignored options are also used.\n\nThe  -v/--verbose  option  shows  information  when the repository is in an unfinished merge,\nshelve, rebase state etc. You can have this behavior turned on by  default  by  enabling  the\ncommands.status.verbose option.\n\nYou  can skip displaying some of these states by setting commands.status.skipstates to one or\nmore of: 'bisect', 'graft', 'histedit', 'merge', 'rebase', or 'unshelve'.\n\nTemplate:\n\nThe following keywords are supported in addition to the common template  keywords  and  func‐\ntions. See also hg help templates.\n\npath   String. Repository-absolute path of the file.\n\nsource String.  Repository-absolute  path of the file originated from.  Available if --copies\nis specified.\n\nstatus String. Character denoting file's status.\n\nExamples:\n\n• show changes in the working directory relative to a changeset:\n\nhg status --rev 9353\n\n• show changes in the working directory relative to the current directory (see hg  help  pat‐‐\nterns for more information):\n\nhg status re:\n\n• show all changes including copies in an existing changeset:\n\nhg status --copies --change 9353\n\n• get a NUL separated list of added files, suitable for xargs:\n\nhg status -an0\n\n• show  more  information about the repository status, abbreviating added, removed, modified,\ndeleted, and untracked paths:\n\nhg status -v -t mardu\n\nReturns 0 on success.\n\nOptions:\n\n#### -A, --all\n\nshow status of all files\n\n#### -m, --modified\n\nshow only modified files\n\n#### -a, --added\n\nshow only added files\n\n#### -r, --removed\n\nshow only removed files\n\n#### -d, --deleted\n\nshow only missing files\n\n#### -c, --clean\n\nshow only files without changes\n\n#### -u, --unknown\n\nshow only unknown (not tracked) files\n\n#### -i, --ignored\n\nshow only ignored files\n\n#### -n, --no-status\n\nhide status prefix\n\n#### -t,\n\nshow the terse output (EXPERIMENTAL) (default: nothing)\n\n#### -C, --copies\n\nshow source of copied files (DEFAULT: ui.statuscopies)\n\n#### -0, --print0\n\nend filenames with NUL, for use with xargs\n\n--rev <REV[+]>\nshow difference from revision\n\n--change <REV>\nlist the changed files of a revision\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\naliases: st\n\n#### summary\n\nsummarize working directory state:\n\nhg summary [--remote]\n\nThis generates a brief summary of the working directory  state,  including  parents,  branch,\ncommit status, phase and available updates.\n\nWith  the  --remote  option,  this  will  check  the  default paths for incoming and outgoing\nchanges. This can be time-consuming.\n\nReturns 0 on success.\n\nOptions:\n\n#### --remote\n\ncheck for push and pull\n\naliases: sum\n\n#### unshelve\n\nrestore a shelved change to the working directory:\n\nhg unshelve [OPTION]... [[-n] SHELVED]\n\nThis command accepts an optional name of a shelved change to restore. If none is  given,  the\nmost recent shelved change is used.\n\nIf  a shelved change is applied successfully, the bundle that contains the shelved changes is\nmoved to a backup location (.hg/shelve-backup).\n\nSince you can restore a shelved change on top of an arbitrary commit, it is possible that un‐\nshelving  will  result  in a conflict between your changes and the commits you are unshelving\nonto. If this occurs, you must resolve the conflict, then use --continue to complete the  un‐\nshelve  operation.  (The  bundle  will  not  be moved until you successfully complete the un‐\nshelve.)\n\n(Alternatively, you can use --abort to abandon an unshelve that causes a conflict.  This  re‐\nverts the unshelved changes, and leaves the bundle in place.)\n\nIf  bare  shelved  change (without interactive, include and exclude option) was done on newly\ncreated branch it would restore branch information to the working directory.\n\nAfter a successful unshelve, the shelved changes are stored in a backup directory. Only the N\nmost   recent  backups  are  kept.  N  defaults  to  10  but  can  be  overridden  using  the\nshelve.maxbackups configuration option.\n\nTimestamp in seconds is used to decide order of backups. More  than  maxbackups  backups  are\nkept, if same timestamp prevents from deciding exact order of them, for safety.\n\nSelected  changes can be unshelved with --interactive flag.  The working directory is updated\nwith the selected changes, and only the unselected changes remain shelved.  Note:  The  whole\nshelve  is  applied  to  working  directory first before running interactively. So, this will\nbring up all the conflicts between working directory and the shelve,  irrespective  of  which\nchanges will be unshelved.\n\nOptions:\n\n#### -a, --abort\n\nabort an incomplete unshelve operation\n\n#### -c, --continue\n\ncontinue an incomplete unshelve operation\n\n#### -i, --interactive\n\nuse interactive mode (EXPERIMENTAL)\n\n#### -k, --keep\n\nkeep shelve after unshelving\n\n#### -n,\n\nrestore shelved change with given name\n\n#### -t,\n\nspecify merge tool\n\n--date <DATE>\nset date for temporary commits (DEPRECATED)\n\n#### update\n\nupdate working directory (or switch revisions):\n\nhg update [-C|-c|-m] [-d DATE] [[-r] REV]\n\nUpdate  the  repository's  working  directory  to the specified changeset. If no changeset is\nspecified, update to the tip of the current named branch and move the active bookmark (see hg\nhelp bookmarks).\n\nUpdate  sets  the working directory's parent revision to the specified changeset (see hg help\nparents).\n\nIf the changeset is not a descendant or ancestor of the working directory's parent and  there\nare  uncommitted  changes, the update is aborted. With the -c/--check option, the working di‐\nrectory is checked for uncommitted changes; if none are found, the working directory  is  up‐\ndated to the specified changeset.\n\nThe -C/--clean, -c/--check, and -m/--merge options control what happens if the working direc‐\ntory contains uncommitted changes.  At most of one of them can be specified.\n\n1. If no option is specified, and if the requested changeset is an ancestor or descendant  of\nthe  working  directory's  parent,  the  uncommitted changes are merged into the requested\nchangeset and the merged result is left uncommitted. If the requested changeset is not  an\nancestor  or  descendant (that is, it is on another branch), the update is aborted and the\nuncommitted changes are preserved.\n\n2. With the -m/--merge option, the update is allowed even if the requested changeset  is  not\nan ancestor or descendant of the working directory's parent.\n\n3. With  the  -c/--check  option,  the update is aborted and the uncommitted changes are pre‐\nserved.\n\n4. With the -C/--clean option, uncommitted changes are discarded and the working directory is\nupdated to the requested changeset.\n\nTo cancel an uncommitted merge (and lose your changes), use hg merge --abort.\n\nUse null as the changeset to remove the working directory (like hg clone -U).\n\nIf you want to revert just one file to an older revision, use hg revert [-r REV] NAME.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nReturns 0 on success, 1 if there are unresolved files.\n\nOptions:\n\n#### -C, --clean\n\ndiscard uncommitted changes (no backup)\n\n#### -c, --check\n\nrequire clean working directory\n\n#### -m, --merge\n\nmerge uncommitted changes\n\n#### -d,\n\ntipmost revision matching date\n\n#### -r,\n\nrevision\n\n#### -t,\n\nspecify merge tool\n\naliases: up checkout co\n\n#### Change import/export\n\n#### archive\n\ncreate an unversioned archive of a repository revision:\n\nhg archive [OPTION]... DEST\n\nBy default, the revision used is the parent of the working directory; use -r/--rev to specify\na different revision.\n\nThe archive type is  automatically  detected  based  on  file  extension  (to  override,  use\n-t/--type).\n\nExamples:\n\n• create a zip file containing the 1.0 release:\n\nhg archive -r 1.0 project-1.0.zip\n\n• create a tarball excluding .hg files:\n\nhg archive project.tar.gz -X \".hg*\"\n\nValid types are:\n\n#### files\n\na directory full of files (default)\n\n#### tar\n\ntar archive, uncompressed\n\n#### tbz2\n\ntar archive, compressed using bzip2\n\n#### tgz\n\ntar archive, compressed using gzip\n\n#### txz\n\ntar archive, compressed using lzma (only in Python 3)\n\n#### uzip\n\nzip archive, uncompressed\n\n#### zip\n\nzip archive, compressed using deflate\n\nThe exact name of the destination archive or directory is given using a format string; see hg\nhelp export for details.\n\nEach member added to an archive file has a directory prefix  prepended.  Use  -p/--prefix  to\nspecify a format string for the prefix. The default is the basename of the archive, with suf‐\nfixes removed.\n\nReturns 0 on success.\n\nOptions:\n\n#### --no-decode\n\ndo not pass files through decoders\n\n#### -p,\n\ndirectory prefix for files in archive\n\n#### -r,\n\nrevision to distribute\n\n#### -t,\n\ntype of distribution to create\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### bundle\n\ncreate a bundle file:\n\nhg bundle [-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]...\n\nGenerate a bundle file containing data to be transferred to another repository.\n\nTo create a bundle containing all changesets, use -a/--all (or --base  null).  Otherwise,  hg\nassumes  the  destination  will have all the nodes you specify with --base parameters. Other‐\nwise, hg will assume the repository has all the nodes in destination, or default-push/default\nif  no  destination  is  specified, where destination is the repositories you provide through\nDEST option.\n\nYou can change bundle format with the -t/--type option. See hg help bundlespec for documenta‐\ntion on this format. By default, the most appropriate format is used and compression defaults\nto bzip2.\n\nThe bundle file can then be transferred using  conventional  means  and  applied  to  another\nrepository  with  the  unbundle or pull command. This is useful when direct push and pull are\nnot available or when exporting an entire repository is undesirable.\n\nApplying bundles preserves all changeset contents including permissions, copy/rename informa‐\ntion, and revision history.\n\nReturns 0 on success, 1 if no changes found.\n\nOptions:\n\n#### -f, --force\n\nrun even when the destination is unrelated\n\n#### -r,\n\na changeset intended to be added to the destination\n\n#### -b,\n\na specific branch you would like to bundle\n\n--base <REV[+]>\na base changeset assumed to be available at the destination\n\n#### -a, --all\n\nbundle all changesets in the repository\n\n#### -t,\n\nbundle compression type to use (default: bzip2)\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### export\n\ndump the header and diffs for one or more changesets:\n\nhg export [OPTION]... [-o OUTFILESPEC] [-r] [REV]...\n\nPrint the changeset header and diffs for one or more revisions.  If no revision is given, the\nparent of the working directory is used.\n\nThe information shown in the changeset header is: author, date, branch name (if non-default),\nchangeset hash, parent(s) and commit comment.\n\nNote   hg export may generate unexpected diff output for merge changesets, as it will compare\nthe merge changeset against its first parent only.\n\nOutput may be to a file, in which case the name of the file is given using a template string.\nSee  hg help templates. In addition to the common template keywords, the following formatting\nrules are supported:\n\n%%\n\nliteral \"%\" character\n\n%H\n\nchangeset hash (40 hexadecimal digits)\n\n%N\n\nnumber of patches being generated\n\n%R\n\nchangeset revision number\n\n%b\n\nbasename of the exporting repository\n\n%h\n\nshort-form changeset hash (12 hexadecimal digits)\n\n%m\n\nfirst line of the commit message (only alphanumeric characters)\n\n%n\n\nzero-padded sequence number, starting at 1\n\n%r\n\nzero-padded changeset revision number\n\n\\\n\nliteral \"\" character\n\nWithout the -a/--text option, export will avoid generating diffs of files it detects  as  bi‐\nnary. With -a, export will generate a diff anyway, probably with undesirable results.\n\nWith -B/--bookmark changesets reachable by the given bookmark are selected.\n\nUse  the -g/--git option to generate diffs in the git extended diff format. See hg help diffs\nfor more information.\n\nWith the --switch-parent option, the diff will be against the second parent. It can be useful\nto review a merge.\n\nTemplate:\n\nThe  following  keywords  are supported in addition to the common template keywords and func‐\ntions. See also hg help templates.\n\ndiff   String. Diff content.\n\n#### parents\n\nList of strings. Parent nodes of the changeset.\n\nExamples:\n\n• use export and import to transplant a bugfix to the current branch:\n\nhg export -r 9353 | hg import -\n\n• export all the changesets between two revisions to a file with rename information:\n\nhg export --git -r 123:150 > changes.txt\n\n• split outgoing changes into a series of patches with descriptive names:\n\nhg export -r \"outgoing()\" -o \"%n-%m.patch\"\n\nReturns 0 on success.\n\nOptions:\n\n#### -B,\n\nexport changes only reachable by given bookmark\n\n#### -o,\n\nprint output to file with formatted name\n\n#### --switch-parent\n\ndiff against the second parent\n\n#### -r,\n\nrevisions to export\n\n#### -a, --text\n\ntreat all files as text\n\n#### -g, --git\n\nuse git extended diff format (DEFAULT: diff.git)\n\n#### --binary\n\ngenerate binary diffs in git mode (default)\n\n#### --nodates\n\nomit dates from diff headers\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\n#### import\n\nimport an ordered set of patches:\n\nhg import [OPTION]... PATCH...\n\nImport a list of patches and commit them individually (unless --no-commit is specified).\n\nTo read a patch from standard input (stdin), use \"-\" as the patch name. If a  URL  is  speci‐\nfied, the patch will be downloaded from there.\n\nImport  first applies changes to the working directory (unless --bypass is specified), import\nwill abort if there are outstanding changes.\n\nUse --bypass to apply and commit patches directly to the repository,  without  affecting  the\nworking  directory.  Without --exact, patches will be applied on top of the working directory\nparent revision.\n\nYou can import a patch straight from a mail message. Even patches as attachments work (to use\nthe  body  part,  it  must have type text/plain or text/x-patch). From and Subject headers of\nemail message are used as default committer and commit message. All text/plain body parts be‐\nfore first diff are added to the commit message.\n\nIf  the  imported  patch was generated by hg export, user and description from patch override\nvalues from message headers and body. Values given on  command  line  with  -m/--message  and\n-u/--user override these.\n\nIf  --exact  is  specified, import will set the working directory to the parent of each patch\nbefore applying it, and will abort if the resulting changeset has a different ID than the one\nrecorded  in  the patch. This will guard against various ways that portable patch formats and\nmail systems might fail to transfer Mercurial data or metadata. See  hg  bundle for  lossless\ntransmission.\n\nUse --partial to ensure a changeset will be created from the patch even if some hunks fail to\napply. Hunks that fail to apply will be written to a <target-file>.rej  file.  Conflicts  can\nthen  be  resolved  by  hand before hg commit --amend is run to update the created changeset.\nThis flag exists to let people import patches that partially apply without losing the associ‐\nated metadata (author, date, description, ...).\n\nNote   When  no  hunks apply cleanly, hg import --partial will create an empty changeset, im‐\nporting only the patch metadata.\n\nWith -s/--similarity, hg will attempt to discover renames and copies in the patch in the same\nway as hg addremove.\n\nIt  is  possible  to use external patch programs to perform the patch by setting the ui.patch\nconfiguration option. For the default internal tool, the fuzz  can  also  be  configured  via\npatch.fuzz.  See hg help config for more information about configuration files and how to use\nthese options.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nExamples:\n\n• import a traditional patch from a website and detect renames:\n\nhg import -s 80 http://example.com/bugfix.patch\n\n• import a changeset from an hgweb server:\n\nhg import https://www.mercurial-scm.org/repo/hg/rev/5ca8c111e9aa\n\n• import all the patches in an Unix-style mbox:\n\nhg import incoming-patches.mbox\n\n• import patches from stdin:\n\nhg import -\n\n• attempt to exactly restore an exported changeset (not always possible):\n\nhg import --exact proposed-fix.patch\n\n• use an external tool to apply a patch which is too fuzzy for the default internal tool.\n\nhg import --config ui.patch=\"patch --merge\" fuzzy.patch\n\n• change the default fuzzing from 2 to a less strict 7\n\nhg import --config ui.fuzz=7 fuzz.patch\n\nReturns 0 on success, 1 on partial success (see --partial).\n\nOptions:\n\n#### -p,\n\ndirectory strip option for patch. This has the same meaning as the corresponding patch\noption (default: 1)\n\n#### -b,\n\nbase path (DEPRECATED)\n\n#### --secret\n\nuse the secret phase for committing\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -f, --force\n\nskip check for outstanding uncommitted changes (DEPRECATED)\n\n#### --no-commit\n\ndon't commit, just update the working directory\n\n#### --bypass\n\napply patch without touching the working directory\n\n#### --partial\n\ncommit even if some hunks fail\n\n#### --exact\n\nabort if patch would apply lossily\n\n--prefix <DIR>\napply patch to subdirectory\n\n#### --import-branch\n\nuse any branch information in patch (implied by --exact)\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -s,\n\nguess renamed files by similarity (0<=s<=100)\n\naliases: patch\n\n#### unbundle\n\napply one or more bundle files:\n\nhg unbundle [-u] FILE...\n\nApply one or more bundle files generated by hg bundle.\n\nReturns 0 on success, 1 if an update has unresolved files.\n\nOptions:\n\n#### -u, --update\n\nupdate to new branch head if changesets were unbundled\n\n#### Repository maintenance\n\n#### manifest\n\noutput the current or given revision of the project manifest:\n\nhg manifest [-r REV]\n\nPrint  a  list  of version controlled files for the given revision.  If no revision is given,\nthe first parent of the working directory is used, or the null revision  if  no  revision  is\nchecked out.\n\nWith -v, print file permissions, symlink and executable bits.  With --debug, print file revi‐\nsion hashes.\n\nIf option --all is specified, the list of all files from all revisions is printed.  This  in‐\ncludes deleted and renamed files.\n\nReturns 0 on success.\n\nOptions:\n\n#### -r,\n\nrevision to display\n\n--all  list files from all revisions\n\n#### -T,\n\ndisplay with template\n\n#### recover\n\nroll back an interrupted transaction:\n\nhg recover\n\nRecover from an interrupted commit or pull.\n\nThis  command  tries  to  fix the repository status after an interrupted operation. It should\nonly be necessary when Mercurial suggests it.\n\nReturns 0 if successful, 1 if nothing to recover or verify fails.\n\nOptions:\n\n#### --verify\n\nrun hg verify after successful recover\n\n#### rollback\n\nroll back the last transaction (DANGEROUS) (DEPRECATED):\n\nhg rollback\n\nPlease use hg commit --amend instead of rollback to correct mistakes in the last commit.\n\nThis command should be used with care. There is only one level of rollback, and there  is  no\nway  to  undo  a rollback. It will also restore the dirstate at the time of the last transac‐\ntion, losing any dirstate changes since that time. This command does not  alter  the  working\ndirectory.\n\nTransactions  are  used to encapsulate the effects of all commands that create new changesets\nor propagate existing changesets into a repository.\n\nFor example, the following commands are transactional, and their effects can be rolled back:\n\n• commit\n\n• import\n\n• pull\n\n• push (with this repository as the destination)\n\n• unbundle\n\nTo avoid permanent data loss, rollback will refuse to rollback a  commit  transaction  if  it\nisn't checked out. Use --force to override this protection.\n\nThe  rollback  command can be entirely disabled by setting the ui.rollback configuration set‐\nting to false. If you're here because you want to use rollback and  it's  disabled,  you  can\nre-enable the command by setting ui.rollback to true.\n\nThis  command  is  not  intended for use on public repositories. Once changes are visible for\npull by other users, rolling a transaction back locally is ineffective (someone else may  al‐\nready  have  pulled the changes). Furthermore, a race is possible with readers of the reposi‐\ntory; for example an in-progress pull from the repository may fail  if  a  rollback  is  per‐\nformed.\n\nReturns 0 on success, 1 if no rollback data is available.\n\nOptions:\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n#### -f, --force\n\nignore safety measures\n\n#### verify\n\nverify the integrity of the repository:\n\nhg verify\n\nVerify the integrity of the current repository.\n\nThis will perform an extensive check of the repository's integrity, validating the hashes and\nchecksums of each entry in the changelog, manifest, and tracked files, as well as the  integ‐\nrity of their crosslinks and indices.\n\nPlease see https://mercurial-scm.org/wiki/RepositoryCorruption for more information about re‐\ncovery from corruption of the repository.\n\nReturns 0 on success, 1 if errors are encountered.\n\nOptions:\n\n--full perform more checks (EXPERIMENTAL)\n\n#### Help\n\n#### config\n\nshow combined config settings from all hgrc files:\n\nhg config [-u] [NAME]...\n\nWith no arguments, print names and values of all config items.\n\nWith one argument of the form section.name, print just the value of that config item.\n\nWith multiple arguments, print names and values of all config  items  with  matching  section\nnames or section.names.\n\nWith  --edit,  start  an  editor  on the user-level config file. With --global, edit the sys‐\ntem-wide config file. With --local, edit the repository-level config file.\n\nWith --source, the source (filename and line number) is printed for each config item.\n\nSee hg help config for more information about config files.\n\n--non-shared flag is used to edit .hg/hgrc-not-shared config file.  This file is  not  shared\nacross shares when in share-safe mode.\n\nTemplate:\n\nThe following keywords are supported. See also hg help templates.\n\nname   String. Config name.\n\nsource String. Filename and line number where the item is defined.\n\nvalue  String. Config value.\n\nThe  --shared  flag  can be used to edit the config file of shared source repository. It only\nworks when you have shared using the experimental share safe feature.\n\nReturns 0 on success, 1 if NAME does not exist.\n\nOptions:\n\n#### -u, --untrusted\n\nshow untrusted configuration options\n\n#### --exp-all-known\n\nshow all known config option (EXPERIMENTAL)\n\n#### -e, --edit\n\nedit user config\n\n#### -l, --local\n\nedit repository config\n\n#### --source\n\nshow source of configuration value\n\n#### --shared\n\nedit shared source repository config (EXPERIMENTAL)\n\n#### --non-shared\n\nedit non shared config (EXPERIMENTAL)\n\n#### -g, --global\n\nedit global config\n\n#### -T,\n\ndisplay with template\n\naliases: showconfig debugconfig\n\n#### help\n\nshow help for a given topic or a help overview:\n\nhg help [-eck] [-s PLATFORM] [TOPIC]\n\nWith no arguments, print a list of commands with short help messages.\n\nGiven a topic, extension, or command name, print help for that topic.\n\nReturns 0 if successful.\n\nOptions:\n\n#### -e, --extension\n\nshow only help for extensions\n\n#### -c, --command\n\nshow only help for commands\n\n#### -k, --keyword\n\nshow topics matching keyword\n\n#### -s,\n\nshow help for specific platform(s)\n\n[+] marked option can be specified multiple times\n\n#### version\n\noutput version and copyright information:\n\nhg version\n\nTemplate:\n\nThe following keywords are supported. See also hg help templates.\n\n#### extensions\n\nList of extensions.\n\nver    String. Version number.\n\nAnd each entry of {extensions} provides the following sub-keywords in addition to {ver}.\n\n#### bundled\n\nBoolean. True if included in the release.\n\nname   String. Extension name.\n\nOptions:\n\n#### -T,\n\ndisplay with template\n\n#### Uncategorized commands\n\n### BUNDLE FILE FORMATS\n\nMercurial supports generating standalone \"bundle\" files  that  hold  repository  data.  These\n\"bundles\" are typically saved locally and used later or exchanged between different reposito‐\nries, possibly on different machines. Example commands using bundles are hg bundle and hg un‐‐\nbundle.\n\nGeneration  of  bundle files is controlled by a \"bundle specification\" (\"bundlespec\") string.\nThis string tells the bundle generation process how to create the bundle.\n\nA \"bundlespec\" string is composed of the following elements:\n\ntype   A string denoting the bundle format to use.\n\n#### compression\n\nDenotes the compression engine to use compressing the raw bundle data.\n\n#### parameters\n\nArbitrary key-value parameters to further control bundle generation.\n\nA \"bundlespec\" string has the following formats:\n\n<type> The literal bundle format string is used.\n\n#### <compression>-<type>\n\nThe compression engine and format are delimited by a hyphen (-).\n\nOptional parameters follow the <type>. Parameters are URI escaped key=value pairs. Each  pair\nis  delimited  by a semicolon (;). The first parameter begins after a ; immediately following\nthe <type> value.\n\n#### Available Types\n\nThe following bundle <type> strings are available:\n\nv1     Produces a legacy \"changegroup\" version 1 bundle.\n\nThis format is compatible with nearly all Mercurial clients because it is the  oldest.\nHowever,  it  has  some  limitations, which is why it is no longer the default for new\nrepositories.\n\nv1 bundles can be used with modern repositories using the \"generaldelta\" storage  for‐\nmat. However, it may take longer to produce the bundle and the resulting bundle may be\nsignificantly larger than a v2 bundle.\n\nv1 bundles can only use the gzip, bzip2, and none compression formats.\n\nv2     Produces a version 2 bundle.\n\nVersion 2 bundles are an extensible format that can store additional  repository  data\n(such  as  bookmarks and phases information) and they can store data more efficiently,\nresulting in smaller bundles.\n\nVersion 2 bundles can also use modern compression engines, such as zstd,  making  them\nfaster to compress and often smaller.\n\n#### Available Compression Engines\n\nThe following bundle <compression> engines can be used:\n\n#### bzip2\n\nAn algorithm that produces smaller bundles than gzip.\n\nAll Mercurial clients should support this format.\n\nThis  engine  will  likely produce smaller bundles than gzip but will be significantly\nslower, both during compression and decompression.\n\nIf available, the zstd engine can yield similar or better compression at  much  higher\nspeeds.\n\n#### gzip\n\nzlib compression using the DEFLATE algorithm.\n\nAll  Mercurial clients should support this format. The compression algorithm strikes a\nreasonable balance between compression ratio and size.\n\n#### none\n\nNo compression is performed.\n\nUse this compression engine to explicitly disable compression.\n\n#### Examples\n\nv2\n\nProduce a v2 bundle using default options, including compression.\n\n#### none-v1\n\nProduce a v1 bundle with no compression.\n\n#### zstd-v2\n\nProduce a v2 bundle with zstandard compression using default settings.\n\n#### zstd-v1\n\nThis errors because zstd is not supported for v1 types.\n\n### COLORIZING OUTPUTS\n\nMercurial colorizes output from several commands.\n\nFor example, the diff command shows additions in green and deletions in red, while the status\ncommand  shows  modified  files  in magenta. Many other commands have analogous colors. It is\npossible to customize these colors.\n\nTo enable color (default) whenever possible use:\n\n[ui]\ncolor = yes\n\nTo disable color use:\n\n[ui]\ncolor = no\n\nSee hg help config.ui.color for details.\n\nThe default pager on Windows does not support color, so enabling the pager  will  effectively\ndisable  color.   See hg help config.ui.paginate to disable the pager.  Alternately, MSYS and\nCygwin shells provide less as a pager, which can be configured to support  ANSI  color  mode.\nWindows 10 natively supports ANSI color mode.\n\n#### Mode\n\nMercurial  can use various systems to display color. The supported modes are ansi, win32, and\nterminfo.  See hg help config.color for details about how to control the mode.\n\n#### Effects\n\nOther effects in addition to color, like bold and underlined text, are also available. By de‐\nfault,  the terminfo database is used to find the terminal codes used to change color and ef‐\nfect.  If terminfo is not available, then effects are rendered with the ECMA-48  SGR  control\nfunction (aka ANSI escape codes).\n\nThe  available  effects  in terminfo mode are 'blink', 'bold', 'dim', 'inverse', 'invisible',\n'italic', 'standout', and 'underline'; in ECMA-48 mode, the options  are  'bold',  'inverse',\n'italic',  and 'underline'.  How each is rendered depends on the terminal emulator.  Some may\nnot be available for a given terminal type, and will be silently ignored.\n\nIf the terminfo entry for your terminal is missing codes for  an  effect  or  has  the  wrong\ncodes, you can add or override those codes in your configuration:\n\n[color]\nterminfo.dim = \\E[2m\n\nwhere 'E' is substituted with an escape character.\n\n#### Labels\n\nText  receives color effects depending on the labels that it has. Many default Mercurial com‐\nmands emit labelled text. You can also define your own labels in templates  using  the  label\nfunction,  see  hg  help templates. A single portion of text may have more than one label. In\nthat case, effects given to the last label will override any other effects. This includes the\nspecial \"none\" effect, which nullifies other effects.\n\nLabels  are  normally invisible. In order to see these labels and their position in the text,\nuse the global --color=debug option. The same anchor text may be associated to  multiple  la‐\nbels, e.g.\n\n[log.changeset changeset.secret|changeset:   22611:6f0a53c8f587]\n\nThe  following  are the default effects for some default labels. Default effects may be over‐\nridden from your configuration file:\n\n[color]\nstatus.modified = blue bold underline redbackground\nstatus.added = green bold\nstatus.removed = red bold bluebackground\nstatus.deleted = cyan bold underline\nstatus.unknown = magenta bold underline\nstatus.ignored = black bold\n\n# 'none' turns off all effects\nstatus.clean = none\nstatus.copied = none\n\nqseries.applied = blue bold underline\nqseries.unapplied = black bold\nqseries.missing = red bold\n\ndiff.diffline = bold\ndiff.extended = cyan bold\ndiff.filea = red bold\ndiff.fileb = green bold\ndiff.hunk = magenta\ndiff.deleted = red\ndiff.inserted = green\ndiff.changed = white\ndiff.tab =\ndiff.trailingwhitespace = bold redbackground\n\n# Blank so it inherits the style of the surrounding label\nchangeset.public =\nchangeset.draft =\nchangeset.secret =\n\nresolve.unresolved = red bold\nresolve.resolved = green bold\n\nbookmarks.active = green\n\nbranches.active = none\nbranches.closed = black bold\nbranches.current = green\nbranches.inactive = none\n\ntags.normal = green\ntags.local = black bold\n\nrebase.rebased = blue\nrebase.remaining = red bold\n\nshelve.age = cyan\nshelve.newest = green bold\nshelve.name = blue bold\n\nhistedit.remaining = red bold\n\n#### Custom colors\n\nBecause there are only eight standard colors, Mercurial allows you to define color names  for\nother  color  slots  which might be available for your terminal type, assuming terminfo mode.\nFor instance:\n\ncolor.brightblue = 12\ncolor.pink = 207\ncolor.orange = 202\n\nto set 'brightblue' to color slot 12 (useful for 16 color terminals that have brighter colors\ndefined  in  the upper eight) and, 'pink' and 'orange' to colors in 256-color xterm's default\ncolor cube.  These defined colors may then be used as any of the pre-defined eight, including\nappending 'background' to set the background to that color.\n\n### DATE FORMATS\n\nSome commands allow the user to specify a date, e.g.:\n\n• backout, commit, import, tag: Specify the commit date.\n\n• log, revert, update: Select revision(s) by date.\n\nMany date formats are valid. Here are some examples:\n\n• Wed Dec 6 13:18:29 2006 (local timezone assumed)\n\n• Dec 6 13:18 -0600 (year assumed, time offset provided)\n\n• Dec 6 13:18 UTC (UTC and GMT are aliases for +0000)\n\n• Dec 6 (midnight)\n\n• 13:18 (today assumed)\n\n• 3:39 (3:39AM assumed)\n\n• 3:39pm (15:39)\n\n• 2006-12-06 13:18:29 (ISO 8601 format)\n\n• 2006-12-6 13:18\n\n• 2006-12-6\n\n• 12-6\n\n• 12/6\n\n• 12/6/6 (Dec 6 2006)\n\n• today (midnight)\n\n• yesterday (midnight)\n\n• now - right now\n\nLastly, there is Mercurial's internal format:\n\n• 1165411109 0 (Wed Dec 6 13:18:29 2006 UTC)\n\nThis  is the internal representation format for dates. The first number is the number of sec‐\nonds since the epoch (1970-01-01 00:00 UTC). The second is the offset of the local  timezone,\nin seconds west of UTC (negative if the timezone is east of UTC).\n\nThe log command also accepts date ranges:\n\n• <DATE - at or before a given date/time\n\n• >DATE - on or after a given date/time\n\n• DATE to DATE - a date range, inclusive\n\n• -DAYS - within a given number of days from today\n\n### DEPRECATED FEATURES\n\nMercurial  evolves  over time, some features, options, commands may be replaced by better and\nmore secure alternatives. This topic will help you migrating your existing usage and/or  con‐\nfiguration to newer features.\n\n#### Commands\n\nThe following commands are still available but their use are not recommended:\n\n#### locate\n\nThis command has been replaced by hg files.\n\n#### parents\n\nThis  command  can  be replaced by hg summary or hg log with appropriate revsets. See hg help\nrevsets for more information.\n\n#### tip\n\nThe recommended alternative is hg heads.\n\n#### Options\n\n#### web.allowpull\n\nRenamed to allow-pull.\n\nweb.allowpush\n\nRenamed to allow-push.\n\n### DIFF FORMATS\n\nMercurial's default format for showing changes between two versions of a file  is  compatible\nwith  the  unified format of GNU diff, which can be used by GNU patch and many other standard\ntools.\n\nWhile this standard format is often enough, it does not encode the following information:\n\n• executable status and other permission bits\n\n• copy or rename information\n\n• changes in binary files\n\n• creation or deletion of empty files\n\nMercurial also supports the extended diff format from the git VCS which addresses these limi‐\ntations.  The git diff format is not produced by default because a few widespread tools still\ndo not understand this format.\n\nThis means that when generating diffs from a Mercurial repository (e.g. with hg export),  you\nshould  be careful about things like file copies and renames or other things mentioned above,\nbecause when applying a standard diff to a different repository, this  extra  information  is\nlost.  Mercurial's internal operations (like push and pull) are not affected by this, because\nthey use an internal binary format for communicating changes.\n\nTo make Mercurial produce the git extended diff format, use the --git  option  available  for\nmany  commands,  or set 'git = True' in the [diff] section of your configuration file. You do\nnot need to set this option when importing diffs in this format or using them in the  mq  ex‐\ntension.\n\n### ENVIRONMENT VARIABLES\n\nHG     Path  to  the  'hg' executable, automatically passed when running hooks, extensions or\nexternal tools. If unset or empty, this is the hg executable's name if it's frozen, or\nan executable named 'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\nWindows) is searched.\n\nHGEDITOR\nThis is the name of the editor to run when committing. See EDITOR.\n\n(deprecated, see hg help config.ui.editor)\n\nHGENCODING\nThis overrides the default locale setting detected by Mercurial.  This setting is used\nto  convert data including usernames, changeset descriptions, tag names, and branches.\nThis setting can be overridden with the --encoding command-line option.\n\nHGENCODINGMODE\nThis sets Mercurial's behavior for handling unknown characters while transcoding  user\ninput.  The  default  is  \"strict\",  which causes Mercurial to abort if it can't map a\ncharacter. Other settings include \"replace\", which replaces  unknown  characters,  and\n\"ignore\",  which  drops  them.  This setting can be overridden with the --encodingmode\ncommand-line option.\n\nHGENCODINGAMBIGUOUS\nThis sets Mercurial's behavior for handling characters with  \"ambiguous\"  widths  like\naccented Latin characters with East Asian fonts. By default, Mercurial assumes ambigu‐\nous characters are narrow, set this variable to \"wide\" if such characters  cause  for‐\nmatting problems.\n\nHGMERGE\nAn  executable to use for resolving merge conflicts. The program will be executed with\nthree arguments: local file, remote file, ancestor file.\n\n(deprecated, see hg help config.ui.merge)\n\nHGRCPATH\nA list of files or directories to search for configuration files.  Item  separator  is\n\":\"  on  Unix, \";\" on Windows. If HGRCPATH is not set, platform default search path is\nused. If empty, only the .hg/hgrc from the current repository is read.\n\nFor each element in HGRCPATH:\n\n• if it's a directory, all files ending with .rc are added\n\n• otherwise, the file itself will be added\n\nHGRCSKIPREPO\nWhen set, the .hg/hgrc from repositories are not read.\n\nHGPLAIN\nWhen set, this disables any configuration settings that might change  Mercurial's  de‐\nfault  output. This includes encoding, defaults, verbose mode, debug mode, quiet mode,\ntracebacks, and localization. This can be useful when scripting against  Mercurial  in\nthe face of existing user configuration.\n\nIn  addition  to the features disabled by HGPLAIN=, the following values can be speci‐\nfied to adjust behavior:\n\n+strictflags\n\nRestrict parsing of command line flags.\n\nEquivalent options set via command line flags or environment variables are  not  over‐\nridden.\n\nSee hg help scripting for details.\n\nHGPLAINEXCEPT\nThis  is  a comma-separated list of features to preserve when HGPLAIN is enabled. Cur‐\nrently the following values are supported:\n\nalias\n\nDon't remove aliases.\n\ncolor\n\nDon't disable colored output.\n\ni18n\n\nPreserve internationalization.\n\nrevsetalias\n\nDon't remove revset aliases.\n\ntemplatealias\n\nDon't remove template aliases.\n\nprogress\n\nDon't hide progress output.\n\nSetting HGPLAINEXCEPT to anything (even an empty string) will enable plain mode.\n\nHGUSER This is the string used as the author of a commit. If not set, available  values  will\nbe considered in this order:\n\n• HGUSER (deprecated)\n\n• configuration files from the HGRCPATH\n\n• EMAIL\n\n• interactive prompt\n\n• LOGNAME (with @hostname appended)\n\n(deprecated, see hg help config.ui.username)\n\nEMAIL  May be used as the author of a commit; see HGUSER.\n\nLOGNAME\nMay be used as the author of a commit; see HGUSER.\n\nVISUAL This is the name of the editor to use when committing. See EDITOR.\n\nEDITOR Sometimes  Mercurial  needs to open a text file in an editor for a user to modify, for\nexample when writing commit messages. The editor it uses is determined by  looking  at\nthe  environment  variables  HGEDITOR,  VISUAL  and  EDITOR,  in that order. The first\nnon-empty one is chosen. If all of them are empty, the editor defaults to 'vi'.\n\nPYTHONPATH\nThis is used by Python to find imported modules and may need to be  set  appropriately\nif this Mercurial is not installed system-wide.\n\n#### SAFELY REWRITING HISTORY (EXPERIMENTAL)\n\nObsolescence markers make it possible to mark changesets that have been deleted or superseded\nin a new version of the changeset.\n\nUnlike the previous way of handling such changes, by stripping the old  changesets  from  the\nrepository,  obsolescence  markers  can be propagated between repositories. This allows for a\nsafe and simple way of exchanging mutable history and altering it after the  fact.  Changeset\nphases  are respected, such that only draft and secret changesets can be altered (see hg help\nphases for details).\n\nObsolescence is tracked using \"obsolescence markers\", a  piece  of  metadata  tracking  which\nchangesets  have  been  made obsolete, potential successors for a given changeset, the moment\nthe changeset was marked as obsolete, and the user who performed the rewriting operation. The\nmarkers  are  stored  separately from standard changeset data can be exchanged without any of\nthe precursor changesets, preventing unnecessary exchange of obsolescence data.\n\nThe complete set of obsolescence markers describes a history of changeset modifications  that\nis  orthogonal to the repository history of file modifications. This changeset history allows\nfor detection and automatic resolution of edge cases arising from  multiple  users  rewriting\nthe same part of history concurrently.\n\n#### Current feature status\n\nThis feature is still in development.\n\n#### Instability\n\nRewriting changesets might introduce instability.\n\nThere are two main kinds of instability: orphaning and diverging.\n\nOrphans  are  changesets  left behind when their ancestors are rewritten.  Divergence has two\nvariants:\n\n• Content-divergence occurs when independent rewrites of the same changesets lead to  differ‐\nent results.\n\n• Phase-divergence occurs when the old (obsolete) version of a changeset becomes public.\n\nIt is possible to prevent local creation of orphans by using the following config:\n\n[experimental]\nevolution.createmarkers = true\nevolution.exchange = true\n\nYou can also enable that option explicitly:\n\n[experimental]\nevolution.createmarkers = true\nevolution.exchange = true\nevolution.allowunstable = true\n\n### USING ADDITIONAL FEATURES\n\nMercurial  has  the ability to add new features through the use of extensions. Extensions may\nadd new commands, add options to existing commands, change the default behavior of  commands,\nor implement hooks.\n\nTo  enable  the  \"foo\" extension, either shipped with Mercurial or in the Python search path,\ncreate an entry for it in your configuration file, like this:\n\n[extensions]\nfoo =\n\nYou may also specify the full path to an extension:\n\n[extensions]\nmyfeature = ~/.hgext/myfeature.py\n\nSee hg help config for more information on configuration files.\n\nExtensions are not loaded by default for a variety of  reasons:  they  can  increase  startup\noverhead;  they  may be meant for advanced usage only; they may provide potentially dangerous\nabilities (such as letting you destroy or modify history); they might not be ready for  prime\ntime; or they may alter some usual behaviors of stock Mercurial. It is thus up to the user to\nactivate extensions as needed.\n\nTo explicitly disable an extension enabled in a configuration file of broader scope,  prepend\nits path with !:\n\n[extensions]\n# disabling extension bar residing in /path/to/extension/bar.py\nbar = !/path/to/extension/bar.py\n# ditto, but no path was supplied for extension baz\nbaz = !\n\ndisabled extensions:\n\nacl    hooks for controlling repository access\n\nblackbox\nlog repository events to a blackbox for debugging\n\nbugzilla\nhooks for integrating with the Bugzilla bug tracker\n\ncensor erase file content at a given revision\n\nchurn  command to display statistics about repository history\n\nclonebundles\nadvertise pre-generated bundles to seed clones\n\nclosehead\nclose arbitrary heads without checking them out first\n\nconvert\nimport revisions from foreign VCS repositories into Mercurial\n\neol    automatically manage newlines in repository files\n\nextdiff\ncommand to allow external programs to compare revisions\n\nfactotum\nhttp authentication with factotum\n\nfastexport\nexport repositories as git fast-import stream\n\ngithelp\ntry mapping git commands to Mercurial commands\n\ngpg    commands to sign and verify changesets\n\nhgk    browse the repository in a graphical way\n\nhighlight\nsyntax highlighting for hgweb (requires Pygments)\n\nhistedit\ninteractive history editing\n\nkeyword\nexpand keywords in tracked files\n\nlargefiles\ntrack large binary files\n\nmq     manage a stack of patches\n\nnotify hooks for sending email push notifications\n\npatchbomb\ncommand to send changesets as (a series of) patch emails\n\nrebase command to move sets of revisions to a different ancestor\n\nrelink recreates hardlinks between repository clones\n\nschemes\nextend schemes with shortcuts to repository swarms\n\nshare  share a common history between several working directories\n\ntransplant\ncommand to transplant changesets from another branch\n\nwin32mbcs\nallow the use of MBCS paths with problematic encodings\n\nzeroconf\ndiscover and advertise repositories on the local network\n\n### SPECIFYING FILE SETS\n\nMercurial supports a functional language for selecting a set of files.\n\nLike  other  file  patterns, this pattern type is indicated by a prefix, 'set:'. The language\nsupports a number of predicates which are joined by infix operators. Parenthesis can be  used\nfor grouping.\n\nIdentifiers such as filenames or patterns must be quoted with single or double quotes if they\ncontain characters outside of [.*{}[]?/\\a-zA-Z0-9\\x80-\\xff] or if they match one of the pre‐\ndefined  predicates.  This  generally applies to file patterns other than globs and arguments\nfor predicates. Pattern prefixes such as path: may be specified without quoting.\n\nSpecial characters can be used in quoted identifiers by escaping them,  e.g.,  \\n  is  inter‐\npreted  as a newline. To prevent them from being interpreted, strings can be prefixed with r,\ne.g. r'...'.\n\nSee also hg help patterns.\n\n#### Operators\n\nThere is a single prefix operator:\n\n#### not x\n\nFiles not in x. Short form is ! x.\n\nThese are the supported infix operators:\n\n#### x and y\n\nThe intersection of files in x and y. Short form is x & y.\n\n#### x or y\n\nThe union of files in x and y. There are two alternative short forms: x | y and x + y.\n\n#### x - y\n\nFiles in x but not in y.\n\n#### Predicates\n\nThe following predicates are supported:\n\n#### added()\n\nFile that is added according to hg status.\n\n#### binary()\n\nFile that appears to be binary (contains NUL bytes).\n\n#### clean()\n\nFile that is clean according to hg status.\n\n#### copied()\n\nFile that is recorded as being copied.\n\n#### deleted()\n\nAlias for missing().\n\n#### encoding(name)\n\nFile can be successfully decoded with the given character encoding. May not be  useful\nfor encodings other than ASCII and UTF-8.\n\n#### eol(style)\n\nFile contains newlines of the given style (dos, unix, mac). Binary files are excluded,\nfiles with mixed line endings match multiple styles.\n\n#### exec()\n\nFile that is marked as executable.\n\n#### grep(regex)\n\nFile contains the given regular expression.\n\n#### hgignore()\n\nFile that matches the active .hgignore pattern.\n\n#### ignored()\n\nFile that is ignored according to hg status.\n\n#### missing()\n\nFile that is missing according to hg status.\n\n#### modified()\n\nFile that is modified according to hg status.\n\n#### portable()\n\nFile that has a portable name. (This doesn't include filenames with case collisions.)\n\n#### removed()\n\nFile that is removed according to hg status.\n\n#### resolved()\n\nFile that is marked resolved according to hg resolve -l.\n\n#### revs(revs, pattern)\n\nEvaluate set in the specified revisions. If the revset match multiple revs, this  will\nreturn file matching pattern in any of the revision.\n\n#### size(expression)\n\nFile size matches the given expression. Examples:\n\n• size('1k') - files from 1024 to 2047 bytes\n\n• size('< 20k') - files less than 20480 bytes\n\n• size('>= .5MB') - files at least 524288 bytes\n\n• size('4k - 1MB') - files from 4096 bytes to 1048576 bytes\n\n#### status(base, rev, pattern)\n\nEvaluate predicate using status change between base and rev. Examples:\n\n• status(3, 7, added()) - matches files added from \"3\" to \"7\"\n\n#### subrepo([pattern])\n\nSubrepositories whose paths match the given pattern.\n\n#### symlink()\n\nFile that is marked as a symlink.\n\n#### tracked()\n\nFile that is under Mercurial control.\n\n#### unknown()\n\nFile that is unknown according to hg status.\n\n#### unresolved()\n\nFile that is marked unresolved according to hg resolve -l.\n\n#### Examples\n\nSome sample queries:\n\n• Show status of files that appear to be binary in the working directory:\n\nhg status -A \"set:binary()\"\n\n• Forget files that are in .hgignore but are already tracked:\n\nhg forget \"set:hgignore() and not ignored()\"\n\n• Find text files that contain a string:\n\nhg files \"set:grep(magic) and not binary()\"\n\n• Find C files in a non-standard encoding:\n\nhg files \"set:.c and not encoding('UTF-8')\"\n\n• Revert copies of large binary files:\n\nhg revert \"set:copied() and binary() and size('>1M')\"\n\n• Revert files that were added to the working directory:\n\nhg revert \"set:revs('wdir()', added())\"\n\n• Remove files listed in foo.lst that contain the letter a or b:\n\nhg remove \"set: listfile:foo.lst and (a* or b*)\"\n\n### COMMAND-LINE FLAGS\n\nMost Mercurial commands accept various flags.\n\n#### Flag names\n\nFlags  for  each  command  are listed in hg help for that command.  Additionally, some flags,\nsuch as --repository, are global and can be used with any command - those are seen in hg help\n\n#### -v\n\nEvery  flag  has at least a long name, such as --repository. Some flags may also have a short\none-letter name, such as the equivalent -R. Using the short or long name  is  equivalent  and\nhas the same effect. The long name may be abbreviated to any unambiguous prefix. For example,\nhg commit --amend can be abbreviated to hg commit --am.\n\nFlags that have a short name can also be bundled together - for  instance,  to  specify  both\n--edit (short -e) and --interactive (short -i), one could use:\n\nhg commit -ei\n\nIf  any of the bundled flags takes a value (i.e. is not a boolean), it must be last, followed\nby the value:\n\nhg commit -im 'Message'\n\n#### Flag types\n\nMercurial command-line flags can be strings, numbers, booleans, or lists of strings.\n\n#### Specifying flag values\n\nThe following syntaxes are allowed, assuming a flag 'flagname' with short name 'f':\n\n--flagname=foo\n--flagname foo\n-f foo\n\n#### -ffoo\n\nThis syntax applies to all non-boolean flags (strings, numbers or lists).\n\n#### Specifying boolean flags\n\nBoolean flags do not take a value parameter. To specify a boolean, use the flag name  to  set\nit to true, or the same name prefixed with 'no-' to set it to false:\n\nhg commit --interactive\nhg commit --no-interactive\n\n#### Specifying list flags\n\nList flags take multiple values. To specify them, pass the flag multiple times:\n\nhg files --include mercurial --include tests\n\n#### Setting flag defaults\n\nIn order to set a default value for a flag in an hgrc file, it is recommended to use aliases:\n\n[alias]\ncommit = commit --interactive\n\nFor more information on hgrc files, see hg help config.\n\n#### Overriding flags on the command line\n\nIf  the same non-list flag is specified multiple times on the command line, the latest speci‐\nfication is used:\n\nhg commit -m \"Ignored value\" -m \"Used value\"\n\nThis includes the use of aliases - e.g., if one has:\n\n[alias]\ncommittemp = commit -m \"Ignored value\"\n\nthen the following command will override that -m:\n\nhg committemp -m \"Used value\"\n\n#### Overriding flag defaults\n\nEvery flag has a default value, and you may also set your own defaults in hgrc  as  described\nabove.  Except for list flags, defaults can be overridden on the command line simply by spec‐\nifying the flag in that location.\n\n#### Hidden flags\n\nSome flags are not shown in a command's help by default - specifically, those that are deemed\nto be experimental, deprecated or advanced. To show all flags, add the --verbose flag for the\nhelp command:\n\nhg help --verbose commit\n\n### GLOSSARY\n\n#### Ancestor\n\nAny changeset that can be reached by an unbroken chain of  parent  changesets  from  a\ngiven  changeset.  More  precisely, the ancestors of a changeset can be defined by two\nproperties: a parent of a changeset is an ancestor, and a parent of an ancestor is  an\nancestor. See also: 'Descendant'.\n\n#### Bookmark\n\nBookmarks  are pointers to certain commits that move when committing. They are similar\nto tags in that it is possible to use bookmark names in all places where Mercurial ex‐\npects a changeset ID, e.g., with hg update. Unlike tags, bookmarks move along when you\nmake a commit.\n\nBookmarks can be renamed, copied and deleted. Bookmarks are local, unless they are ex‐\nplicitly  pushed  or pulled between repositories.  Pushing and pulling bookmarks allow\nyou to collaborate with others on a branch without creating a named branch.\n\nBranch (Noun) A child changeset that has been created from a parent that is not a head. These\nare  known as topological branches, see 'Branch, topological'. If a topological branch\nis named, it becomes a named branch. If a topological branch is not named, it  becomes\nan anonymous branch. See 'Branch, anonymous' and 'Branch, named'.\n\nBranches may be created when changes are pulled from or pushed to a remote repository,\nsince new heads may be created by these operations. Note that the term branch can also\nbe  used  informally to describe a development process in which certain development is\ndone independently of other development. This is  sometimes  done  explicitly  with  a\nnamed branch, but it can also be done locally, using bookmarks or clones and anonymous\nbranches.\n\nExample: \"The experimental branch.\"\n\n(Verb) The action of creating a child changeset which results  in  its  parent  having\nmore than one child.\n\nExample: \"I'm going to branch at X.\"\n\n#### Branch, anonymous\n\nEvery  time  a new child changeset is created from a parent that is not a head and the\nname of the branch is not changed, a new anonymous branch is created.\n\n#### Branch, closed\n\nA named branch whose branch heads have all been closed.\n\n#### Branch, default\n\nThe branch assigned to a changeset when no name has previously been assigned.\n\n#### Branch head\n\nSee 'Head, branch'.\n\n#### Branch, inactive\n\nIf a named branch has no topological heads, it is considered to be inactive. As an ex‐\nample,  a  feature  branch becomes inactive when it is merged into the default branch.\nThe hg branches command shows inactive branches by default, though they can be  hidden\nwith hg branches --active.\n\nNOTE:  this  concept is deprecated because it is too implicit.  Branches should now be\nexplicitly closed using hg commit --close-branch when they are no longer needed.\n\n#### Branch, named\n\nA collection of changesets which have the same branch name. By default, children of  a\nchangeset in a named branch belong to the same named branch. A child can be explicitly\nassigned to a different branch. See hg help branch, hg  help  branches and  hg  commit\n--close-branch for more information on managing branches.\n\nNamed  branches  can  be thought of as a kind of namespace, dividing the collection of\nchangesets that comprise the repository into a collection of disjoint subsets. A named\nbranch  is not necessarily a topological branch. If a new named branch is created from\nthe head of another named branch, or the default branch, but no further changesets are\nadded  to  that  previous  branch,  then that previous branch will be a branch in name\nonly.\n\n#### Branch tip\n\nSee 'Tip, branch'.\n\n#### Branch, topological\n\nEvery time a new child changeset is created from a parent that is not a  head,  a  new\ntopological  branch  is  created. If a topological branch is named, it becomes a named\nbranch. If a topological branch is not named, it becomes an anonymous  branch  of  the\ncurrent, possibly default, branch.\n\n#### Changelog\n\nA  record  of  the changesets in the order in which they were added to the repository.\nThis includes details such as changeset id, author, commit message, date, and list  of\nchanged files.\n\n#### Changeset\n\nA snapshot of the state of the repository used to record a change.\n\n#### Changeset, child\n\nThe converse of parent changeset: if P is a parent of C, then C is a child of P. There\nis no limit to the number of children that a changeset may have.\n\n#### Changeset id\n\nA SHA-1 hash that uniquely identifies a changeset. It may be represented as  either  a\n\"long\" 40 hexadecimal digit string, or a \"short\" 12 hexadecimal digit string.\n\n#### Changeset, merge\n\nA changeset with two parents. This occurs when a merge is committed.\n\n#### Changeset, parent\n\nA  revision upon which a child changeset is based. Specifically, a parent changeset of\na changeset C is a changeset whose node immediately precedes C in the DAG.  Changesets\nhave at most two parents.\n\n#### Checkout\n\n(Noun)  The  working  directory  being updated to a specific revision. This use should\nprobably be avoided where possible, as changeset is much more appropriate than  check‐\nout in this context.\n\nExample: \"I'm using checkout X.\"\n\n(Verb) Updating the working directory to a specific changeset. See hg help update.\n\nExample: \"I'm going to check out changeset X.\"\n\n#### Child changeset\n\nSee 'Changeset, child'.\n\n#### Close changeset\n\nSee 'Head, closed branch'.\n\n#### Closed branch\n\nSee 'Branch, closed'.\n\nClone  (Noun)  An  entire  or  partial copy of a repository. The partial clone must be in the\nform of a revision and its ancestors.\n\nExample: \"Is your clone up to date?\"\n\n(Verb) The process of creating a clone, using hg clone.\n\nExample: \"I'm going to clone the repository.\"\n\n#### Closed branch head\n\nSee 'Head, closed branch'.\n\nCommit (Noun) A synonym for changeset.\n\nExample: \"Is the bug fixed in your recent commit?\"\n\n(Verb) The act of recording changes to a repository. When files  are  committed  in  a\nworking  directory,  Mercurial  finds  the differences between the committed files and\ntheir parent changeset, creating a new changeset in the repository.\n\nExample: \"You should commit those changes now.\"\n\nCset   A common abbreviation of the term changeset.\n\nDAG    The repository of changesets of a distributed version control system (DVCS) can be de‐\nscribed  as a directed acyclic graph (DAG), consisting of nodes and edges, where nodes\ncorrespond to changesets and edges imply a parent -> child relation. This graph can be\nvisualized by graphical tools such as hg log --graph. In Mercurial, the DAG is limited\nby the requirement for children to have at most two parents.\n\n#### Deprecated\n\nFeature removed from documentation, but not scheduled for removal.\n\n#### Default branch\n\nSee 'Branch, default'.\n\n#### Descendant\n\nAny changeset that can be reached by a chain of child changesets from a given  change‐\nset.  More precisely, the descendants of a changeset can be defined by two properties:\nthe child of a changeset is a descendant, and the child of a descendant is  a  descen‐\ndant. See also: 'Ancestor'.\n\nDiff   (Noun)  The  difference between the contents and attributes of files in two changesets\nor a changeset and the current working directory. The  difference  is  usually  repre‐\nsented  in  a  standard form called a \"diff\" or \"patch\". The \"git diff\" format is used\nwhen the changes include copies, renames, or changes to file attributes, none of which\ncan be represented/handled by classic \"diff\" and \"patch\".\n\nExample: \"Did you see my correction in the diff?\"\n\n(Verb) Diffing two changesets is the action of creating a diff or patch.\n\nExample: \"If you diff with changeset X, you will see what I mean.\"\n\n#### Directory, working\n\nThe  working  directory  represents  the state of the files tracked by Mercurial, that\nwill be recorded in the next commit. The working directory  initially  corresponds  to\nthe  snapshot  at an existing changeset, known as the parent of the working directory.\nSee 'Parent, working directory'. The state may be modified by changes to the files in‐\ntroduced  manually  or by a merge. The repository metadata exists in the .hg directory\ninside the working directory.\n\nDraft  Changesets in the draft phase have not been shared with  publishing  repositories  and\nmay thus be safely changed by history-modifying extensions. See hg help phases.\n\n#### Experimental\n\nFeature that may change or be removed at a later date.\n\nGraph  See DAG and hg log --graph.\n\nHead   The  term  'head' may be used to refer to both a branch head or a repository head, de‐\npending on the context. See 'Head, branch' and 'Head, repository' for specific defini‐\ntions.\n\nHeads are where development generally takes place and are the usual targets for update\nand merge operations.\n\n#### Head, branch\n\nA changeset with no descendants on the same named branch.\n\n#### Head, closed branch\n\nA changeset that marks a head as no longer interesting. The closed head is  no  longer\nlisted  by  hg  heads. A branch is considered closed when all its heads are closed and\nconsequently is not listed by hg branches.\n\nClosed heads can be re-opened by committing new changeset as the child of the  change‐\nset that marks a head as closed.\n\n#### Head, repository\n\nA topological head which has not been closed.\n\n#### Head, topological\n\nA changeset with no children in the repository.\n\n#### History, immutable\n\nOnce  committed, changesets cannot be altered.  Extensions which appear to change his‐\ntory actually create new changesets that replace existing ones, and then  destroy  the\nold  changesets.  Doing  so  in public repositories can result in old changesets being\nreintroduced to the repository.\n\n#### History, rewriting\n\nThe changesets in a repository are immutable. However, extensions to Mercurial can  be\nused to alter the repository, usually in such a way as to preserve changeset contents.\n\n#### Immutable history\n\nSee 'History, immutable'.\n\n#### Merge changeset\n\nSee 'Changeset, merge'.\n\n#### Manifest\n\nEach  changeset  has  a  manifest,  which is the list of files that are tracked by the\nchangeset.\n\nMerge  Used to bring together divergent branches of work. When you update to a changeset  and\nthen  merge another changeset, you bring the history of the latter changeset into your\nworking directory. Once conflicts are resolved (and marked), this merge may be commit‐\nted as a merge changeset, bringing two branches together in the DAG.\n\n#### Named branch\n\nSee 'Branch, named'.\n\n#### Null changeset\n\nThe  empty  changeset.  It  is  the parent state of newly-initialized repositories and\nrepositories with no checked out revision. It is thus the parent  of  root  changesets\nand  the effective ancestor when merging unrelated changesets. Can be specified by the\nalias 'null' or by the changeset ID '000000000000'.\n\nParent See 'Changeset, parent'.\n\n#### Parent changeset\n\nSee 'Changeset, parent'.\n\n#### Parent, working directory\n\nThe working directory parent reflects a virtual revision which is  the  child  of  the\nchangeset  (or  two changesets with an uncommitted merge) shown by hg parents. This is\nchanged with hg update. Other commands to see the working directory parent are hg sum‐‐\nmary and hg id. Can be specified by the alias \".\".\n\nPatch  (Noun) The product of a diff operation.\n\nExample: \"I've sent you my patch.\"\n\n(Verb) The process of using a patch file to transform one changeset into another.\n\nExample: \"You will need to patch that revision.\"\n\nPhase  A  per-changeset state tracking how the changeset has been or should be shared. See hg\nhelp phases.\n\nPublic Changesets in the public phase have been shared with publishing repositories  and  are\ntherefore considered immutable. See hg help phases.\n\nPull   An  operation  in  which  changesets in a remote repository which are not in the local\nrepository are brought into the local repository. Note  that  this  operation  without\nspecial  arguments  only  updates  the repository, it does not update the files in the\nworking directory. See hg help pull.\n\nPush   An operation in which changesets in a local repository  which  are  not  in  a  remote\nrepository  are  sent  to  the  remote  repository. Note that this operation only adds\nchangesets which have been committed locally to  the  remote  repository.  Uncommitted\nchanges are not sent. See hg help push.\n\n#### Repository\n\nThe  metadata  describing  all recorded states of a collection of files. Each recorded\nstate is represented by a changeset. A repository is usually (but not always) found in\nthe  .hg  subdirectory  of a working directory. Any recorded state can be recreated by\n\"updating\" a working directory to a specific changeset.\n\n#### Repository head\n\nSee 'Head, repository'.\n\n#### Revision\n\nA state of the repository at some point in time. Earlier revisions can be  updated  to\nby using hg update.  See also 'Revision number'; See also 'Changeset'.\n\n#### Revision number\n\nThis  integer  uniquely identifies a changeset in a specific repository. It represents\nthe order in which changesets were added to a repository, starting with revision  num‐\nber  0.  Note that the revision number may be different in each clone of a repository.\nTo identify changesets uniquely between different clones, see 'Changeset id'.\n\nRevlog History storage mechanism used by Mercurial. It is a form of delta encoding, with  oc‐\ncasional  full  revision of data followed by delta of each successive revision. It in‐\ncludes data and an index pointing to the data.\n\n#### Rewriting history\n\nSee 'History, rewriting'.\n\nRoot   A changeset that has only the null changeset as its  parent.  Most  repositories  have\nonly a single root changeset.\n\nSecret Changesets in the secret phase may not be shared via push, pull, or clone. See hg help\nphases.\n\nTag    An alternative name given to a changeset. Tags can be used in all places where  Mercu‐\nrial  expects a changeset ID, e.g., with hg update. The creation of a tag is stored in\nthe history and will thus automatically be shared with other using push and pull.\n\nTip    The changeset with the highest revision number. It  is  the  changeset  most  recently\nadded in a repository.\n\n#### Tip, branch\n\nThe  head  of  a  given branch with the highest revision number. When a branch name is\nused as a revision identifier, it refers to the branch tip. See also  'Branch,  head'.\nNote  that  because  revision numbers may be different in different repository clones,\nthe branch tip may be different in different cloned repositories.\n\nUpdate (Noun) Another synonym of changeset.\n\nExample: \"I've pushed an update.\"\n\n(Verb) This term is usually used to describe updating the state of the working  direc‐\ntory to that of a specific changeset. See hg help update.\n\nExample: \"You should update.\"\n\n#### Working directory\n\nSee 'Directory, working'.\n\n#### Working directory parent\n\nSee 'Parent, working directory'.\n\n### SYNTAX FOR MERCURIAL IGNORE FILES\n\n#### Synopsis\n\nThe  Mercurial  system  uses a file called .hgignore in the root directory of a repository to\ncontrol its behavior when it searches for files that it is not currently tracking.\n\n#### Description\n\nThe working directory of a Mercurial repository will often contain files that should  not  be\ntracked  by  Mercurial. These include backup files created by editors and build products cre‐\nated by compilers.  These files can be ignored by listing them in a  .hgignore  file  in  the\nroot  of  the working directory. The .hgignore file must be created manually. It is typically\nput under version control, so that the settings will propagate  to  other  repositories  with\npush and pull.\n\nAn  untracked  file  is ignored if its path relative to the repository root directory, or any\nprefix path of that path, is matched against any pattern in .hgignore.\n\nFor example, say we have an untracked file, file.c, at a/b/file.c inside our repository. Mer‐\ncurial will ignore file.c if any pattern in .hgignore matches a/b/file.c, a/b or a.\n\nIn  addition, a Mercurial configuration file can reference a set of per-user or global ignore\nfiles. See the ignore configuration key on the [ui] section of hg help config for details  of\nhow to configure these files.\n\nTo control Mercurial's handling of files that it manages, many commands support the -I and -X\noptions; see hg help <command> and hg help patterns for details.\n\nFiles that are already tracked are not affected by .hgignore, even if they appear  in  .hgig‐\nnore.  An untracked file X can be explicitly added with hg add X, even if X would be excluded\nby a pattern in .hgignore.\n\n#### Syntax\n\nAn ignore file is a plain text file consisting of a list of patterns, with  one  pattern  per\nline.  Empty  lines are skipped. The # character is treated as a comment character, and the \\\ncharacter is treated as an escape character.\n\nMercurial supports several pattern syntaxes. The default  syntax  used  is  Python/Perl-style\nregular expressions.\n\nTo change the syntax used, use a line of the following form:\n\nsyntax: NAME\n\nwhere NAME is one of the following:\n\n#### regexp\n\nRegular expression, Python/Perl syntax.\n\n#### glob\n\nShell-style glob.\n\n#### rootglob\n\nA variant of glob that is rooted (see below).\n\nThe chosen syntax stays in effect when parsing all patterns that follow, until another syntax\nis selected.\n\nNeither glob nor regexp patterns are rooted. A glob-syntax pattern of the form *.c will match\na file ending in .c in any directory, and a regexp pattern of the form \\.c$ will do the same.\nTo root a regexp pattern, start it with ^. To get the same effect with glob-syntax, you  have\nto use rootglob.\n\nSubdirectories  can  have  their  own  .hgignore  settings  by adding subinclude:path/to/sub‐‐\ndir/.hgignore to the root .hgignore. See hg help patterns for details on subinclude: and  in‐‐\nclude:.\n\nNote   Patterns specified in other than .hgignore are always rooted.  Please see hg help pat‐‐\nterns for details.\n\n#### Example\n\nHere is an example ignore file.\n\n# use glob syntax.\nsyntax: glob\n\n*.elc\n*.pyc\n*~\n\n# switch to regexp syntax.\nsyntax: regexp\n^\\.pc/\n\n#### Debugging\n\nUse the debugignore command to see if and why a file is ignored, or to see the  combined  ig‐\nnore pattern. See hg help debugignore for details.\n\n### CONFIGURING HGWEB\n\nMercurial's  internal  web  server, hgweb, can serve either a single repository, or a tree of\nrepositories. In the second case, repository paths and global options can be defined using  a\ndedicated configuration file common to hg serve, hgweb.wsgi, hgweb.cgi and hgweb.fcgi.\n\nThis file uses the same syntax as other Mercurial configuration files but recognizes only the\nfollowing sections:\n\n• web\n\n• paths\n\n• collections\n\nThe web options are thoroughly described in hg help config.\n\nThe paths section maps URL paths to paths of repositories in the filesystem. hgweb  will  not\nexpose  the  filesystem  directly - only Mercurial repositories can be published and only ac‐\ncording to the configuration.\n\nThe left hand side is the path in the URL. Note that hgweb  reserves  subpaths  like  rev  or\nfile, try using different names for nested repositories to avoid confusing effects.\n\nThe  right  hand  side is the path in the filesystem. If the specified path ends with * or\nthe filesystem will be searched recursively for repositories below that  point.   With  *  it\nwill  not  recurse  into the repositories it finds (except for .hg/patches).  With  it will\nalso search inside repository working directories and possibly find subrepositories.\n\nIn this example:\n\n[paths]\n/projects/a = /srv/tmprepos/a\n/projects/b = c:/repos/b\n/ = /srv/repos/*\n/user/bob = /home/bob/repos/\n\n• The first two entries make two repositories in different directories appear under the  same\ndirectory in the web interface\n\n• The  third entry will publish every Mercurial repository found in /srv/repos/, for instance\nthe repository /srv/repos/quux/ will appear as http://server/quux/\n\n• The    fourth    entry    will    publish     both     http://server/user/bob/quux/     and\nhttp://server/user/bob/quux/testsubrepo/\n\nThe collections section is deprecated and has been superseded by paths.\n\n#### URLs and Common Arguments\n\nURLs  under each repository have the form /{command}[/{arguments}] where {command} represents\nthe name of a command or handler and {arguments} represents any number of additional URL  pa‐\nrameters to that command.\n\nThe  web  server  has a default style associated with it. Styles map to a collection of named\ntemplates. Each template is used to render a specific piece of data, such as a  changeset  or\ndiff.\n\nThe  style for the current request can be overridden two ways. First, if {command} contains a\nhyphen (-), the text before the hyphen defines the style. For example, /atom-log will  render\nthe  log  command  handler  with  the atom style. The second way to set the style is with the\nstyle query string argument. For example, /log?style=atom. The hyphenated  URL  parameter  is\npreferred.\n\nNot  all  templates are available for all styles. Attempting to use a style that doesn't have\nall templates defined may result in an error rendering the page.\n\nMany commands take a {revision} URL parameter. This defines the changeset to operate on. This\nis commonly specified as the short, 12 digit hexadecimal abbreviation for the full 40 charac‐\nter unique revision identifier. However, any value described by hg  help  revisions typically\nworks.\n\n#### Commands and URLs\n\nThe following web commands and their URLs are available:\n\n#### /annotate/{revision}/{path}\n\nShow changeset information for each line in a file.\n\nThe  ignorews,  ignorewsamount, ignorewseol, and ignoreblanklines query string arguments have\nthe same meaning as their [annotate] config equivalents. It uses  the  hgrc  boolean  parsing\nlogic  to interpret the value. e.g. 0 and false are false and 1 and true are true. If not de‐\nfined, the server default settings are used.\n\nThe fileannotate template is rendered.\n\n#### /archive/{revision}.{format}[/{path}]\n\nObtain an archive of repository content.\n\nThe content and type of the archive is defined by a URL path parameter.  format is  the  file\nextension  of  the  archive type to be generated. e.g.  zip or tar.bz2. Not all archive types\nmay be allowed by your server configuration.\n\nThe optional path URL parameter controls content to include in the archive. If omitted, every\nfile  in  the  specified  revision is present in the archive. If included, only the specified\nfile or contents of the specified directory will be included in the archive.\n\nNo template is used for this handler. Raw, binary content is generated.\n\n#### /bookmarks\n\nShow information about bookmarks.\n\nNo arguments are accepted.\n\nThe bookmarks template is rendered.\n\n#### /branches\n\nShow information about branches.\n\nAll known branches are contained in the output, even closed branches.\n\nNo arguments are accepted.\n\nThe branches template is rendered.\n\n#### /changelog[/{revision}]\n\nShow information about multiple changesets.\n\nIf the optional revision URL argument is absent, information about all changesets starting at\ntip  will be rendered. If the revision argument is present, changesets will be shown starting\nfrom the specified revision.\n\nIf revision is absent, the rev query string argument may be  defined.  This  will  perform  a\nsearch for changesets.\n\nThe argument for rev can be a single revision, a revision set, or a literal keyword to search\nfor in changeset data (equivalent to hg log -k).\n\nThe revcount query string argument defines the maximum numbers of changesets to render.\n\nFor non-searches, the changelog template will be rendered.\n\n#### /changeset[/{revision}]\n\nShow information about a single changeset.\n\nA URL path argument is the changeset identifier to show. See hg help revisions  for  possible\nvalues. If not defined, the tip changeset will be shown.\n\nThe  changeset  template is rendered. Contents of the changesettag, changesetbookmark, filen‐‐\nodelink, filenolink, and the many templates related to diffs may all be used to  produce  the\noutput.\n\n#### /comparison/{revision}/{path}\n\nShow  a comparison between the old and new versions of a file from changes made on a particu‐\nlar revision.\n\nThis is similar to the diff handler. However, this form features a split or side-by-side diff\nrather than a unified diff.\n\nThe context query string argument can be used to control the lines of context in the diff.\n\nThe filecomparison template is rendered.\n\n#### /diff/{revision}/{path}\n\nShow how a file changed in a particular commit.\n\nThe filediff template is rendered.\n\nThis  handler is registered under both the /diff and /filediff paths. /diff is used in modern\ncode.\n\n#### /file/{revision}[/{path}]\n\nShow information about a directory or file in the repository.\n\nInfo about the path given as a URL parameter will be rendered.\n\nIf path is a directory, information about the entries in that  directory  will  be  rendered.\nThis form is equivalent to the manifest handler.\n\nIf path is a file, information about that file will be shown via the filerevision template.\n\nIf path is not defined, information about the root directory will be rendered.\n\n#### /diff/{revision}/{path}\n\nShow how a file changed in a particular commit.\n\nThe filediff template is rendered.\n\nThis  handler is registered under both the /diff and /filediff paths. /diff is used in modern\ncode.\n\n#### /filelog/{revision}/{path}\n\nShow information about the history of a file in the repository.\n\nThe revcount query string argument can be defined to control the maximum number of entries to\nshow.\n\nThe filelog template will be rendered.\n\n#### /graph[/{revision}]\n\nShow information about the graphical topology of the repository.\n\nInformation  rendered by this handler can be used to create visual representations of reposi‐\ntory topology.\n\nThe revision URL parameter controls the starting changeset. If it's absent,  the  default  is\ntip.\n\nThe  revcount  query  string argument can define the number of changesets to show information\nfor.\n\nThe graphtop query string argument can specify the starting changeset  for  producing  jsdata\nvariable  that is used for rendering graph in JavaScript. By default it has the same value as\nrevision.\n\nThis handler will render the graph template.\n\n#### /help[/{topic}]\n\nRender help documentation.\n\nThis web command is roughly equivalent to hg help. If a topic is  defined,  that  help  topic\nwill be rendered. If not, an index of available help topics will be rendered.\n\nThe help template will be rendered when requesting help for a topic.  helptopics will be ren‐\ndered for the index of help topics.\n\n#### /log[/{revision}[/{path}]]\n\nShow repository or file history.\n\nFor URLs of the form /log/{revision}, a list of changesets starting at the specified  change‐\nset  identifier  is  shown.  If  {revision}  is not defined, the default is tip. This form is\nequivalent to the changelog handler.\n\nFor URLs of the form /log/{revision}/{file}, the history for a specific file will  be  shown.\nThis form is equivalent to the filelog handler.\n\n#### /manifest[/{revision}[/{path}]]\n\nShow information about a directory.\n\nIf  the  URL  path  arguments  are  omitted, information about the root directory for the tip\nchangeset will be shown.\n\nBecause this handler can only show information for directories, it is recommended to use  the\nfile handler instead, as it can handle both directories and files.\n\nThe manifest template will be rendered for this handler.\n\n#### /changeset[/{revision}]\n\nShow information about a single changeset.\n\nA  URL  path argument is the changeset identifier to show. See hg help revisions for possible\nvalues. If not defined, the tip changeset will be shown.\n\nThe changeset template is rendered. Contents of the changesettag,  changesetbookmark,  filen‐‐\nodelink,  filenolink,  and the many templates related to diffs may all be used to produce the\noutput.\n\n#### /shortlog\n\nShow basic information about a set of changesets.\n\nThis accepts the same parameters as the changelog handler. The only difference is the  short‐‐\nlog template will be rendered instead of the changelog template.\n\n#### /summary\n\nShow a summary of repository state.\n\nInformation  about  the  latest changesets, bookmarks, tags, and branches is captured by this\nhandler.\n\nThe summary template is rendered.\n\n#### /tags\n\nShow information about tags.\n\nNo arguments are accepted.\n\nThe tags template is rendered.\n\n### TECHNICAL IMPLEMENTATION TOPICS\n\nTo access a subtopic, use \"hg help internals.{subtopic-name}\"\n\nbid-merge\nBid Merge Algorithm\n\nbundle2\nBundle2\n\nbundles\nBundles\n\ncbor   CBOR\n\ncensor Censor\n\nchangegroups\nChangegroups\n\nconfig Config Registrar\n\ndirstate-v2\ndirstate-v2 file format\n\nextensions\nExtension API\n\nmergestate\nMergestate\n\nrequirements\nRepository Requirements\n\nrevlogs\nRevision Logs\n\nwireprotocol\nWire Protocol\n\nwireprotocolrpc\nWire Protocol RPC\n\nwireprotocolv2\nWire Protocol Version 2\n\n### MERGE TOOLS\n\nTo merge files Mercurial uses merge tools.\n\nA merge tool combines two different versions of a file into a merged file.  Merge  tools  are\ngiven  the  two  files and the greatest common ancestor of the two file versions, so they can\ndetermine the changes made on both branches.\n\nMerge tools are used both for hg resolve, hg merge, hg update, hg backout and in several  ex‐\ntensions.\n\nUsually, the merge tool tries to automatically reconcile the files by combining all non-over‐\nlapping changes that occurred separately in the two different evolutions of the same  initial\nbase  file.  Furthermore,  some interactive merge programs make it easier to manually resolve\nconflicting merges, either in a graphical way, or by inserting some conflict markers.  Mercu‐\nrial does not include any interactive merge programs but relies on external tools for that.\n\n#### Available merge tools\n\nExternal  merge  tools  and  their properties are configured in the merge-tools configuration\nsection - see hgrc(5) - but they can often just be named by their executable.\n\nA merge tool is generally usable if its executable can be found on the system and if  it  can\nhandle the merge. The executable is found if it is an absolute or relative executable path or\nthe name of an application in the executable search path. The tool is assumed to be  able  to\nhandle  the merge if it can handle symlinks if the file is a symlink, if it can handle binary\nfiles if the file is binary, and if a GUI is available if the tool requires a GUI.\n\nThere are some internal merge tools which can be used. The internal merge tools are:\n\n#### :dump\n\nCreates three versions of the files to merge, containing the contents of local,  other\nand  base. These files can then be used to perform a merge manually. If the file to be\nmerged is named a.txt, these files will accordingly be named a.txt.local,  a.txt.other\nand a.txt.base and they will be placed in the same directory as a.txt.\n\nThis  implies premerge. Therefore, files aren't dumped, if premerge runs successfully.\nUse :forcedump to forcibly write files out.\n\n(actual capabilities: binary, symlink)\n\n#### :fail\n\nRather than attempting to merge files that were modified on both  branches,  it  marks\nthem as unresolved. The resolve command must be used to resolve these conflicts.\n\n(actual capabilities: binary, symlink)\n\n#### :forcedump\n\nCreates three versions of the files as same as :dump, but omits premerge.\n\n(actual capabilities: binary, symlink)\n\n#### :local\n\nUses the local p1() version of files as the merged version.\n\n(actual capabilities: binary, symlink)\n\n#### :merge\n\nUses  the  internal  non-interactive simple merge algorithm for merging files. It will\nfail if there are any conflicts and leave markers in the partially merged file.  Mark‐\ners will have two sections, one for each side of merge.\n\n#### :merge-local\n\nLike  :merge,  but  resolve all conflicts non-interactively in favor of the local p1()\nchanges.\n\n#### :merge-other\n\nLike :merge, but resolve all conflicts non-interactively in favor of  the  other  p2()\nchanges.\n\n#### :merge3\n\nUses  the  internal  non-interactive simple merge algorithm for merging files. It will\nfail if there are any conflicts and leave markers in the partially merged file. Marker\nwill  have  three  sections, one from each side of the merge and one for the base con‐\ntent.\n\n#### :mergediff\n\nUses the internal non-interactive simple merge algorithm for merging  files.  It  will\nfail  if  there  are any conflicts and leave markers in the partially merged file. The\nmarker will have two sections, one with the content from one side of  the  merge,  and\none with a diff from the base content to the content on the other side. (experimental)\n\n#### :other\n\nUses the other p2() version of files as the merged version.\n\n(actual capabilities: binary, symlink)\n\n#### :prompt\n\nAsks  the user which of the local p1() or the other p2() version to keep as the merged\nversion.\n\n(actual capabilities: binary, symlink)\n\n#### :tagmerge\n\nUses the internal tag merge algorithm (experimental).\n\n#### :union\n\nUses the internal non-interactive simple merge algorithm for merging  files.  It  will\nuse both left and right sides for conflict regions.  No markers are inserted.\n\nInternal  tools  are always available and do not require a GUI but will by default not handle\nsymlinks or binary files. See next section for detail about \"actual  capabilities\"  described\nabove.\n\n#### Choosing a merge tool\n\nMercurial uses these rules when deciding which merge tool to use:\n\n1. If  a  tool has been specified with the --tool option to merge or resolve, it is used.  If\nit is the name of a tool in the merge-tools configuration, its configuration is used. Oth‐\nerwise the specified tool must be executable by the shell.\n\n2. If  the  HGMERGE environment variable is present, its value is used and must be executable\nby the shell.\n\n3. If the filename of the file to be merged matches any of the patterns in the merge-patterns\nconfiguration  section, the first usable merge tool corresponding to a matching pattern is\nused.\n\n4. If ui.merge is set it will be considered next. If the value is not the name of  a  config‐\nured  tool, the specified value is used and must be executable by the shell. Otherwise the\nnamed tool is used if it is usable.\n\n5. If any usable merge tools are present in the merge-tools configuration  section,  the  one\nwith the highest priority is used.\n\n6. If a program named hgmerge can be found on the system, it is used - but it will by default\nnot be used for symlinks and binary files.\n\n7. If the file to be merged is not binary and is not a symlink, then internal :merge is used.\n\n8. Otherwise, :prompt is used.\n\nFor historical reason, Mercurial treats merge tools as below while examining rules above.\n\n┌───────────┬────────────────┬────────┬─────────┐\n│step       │ specified via  │ binary │ symlink │\n├───────────┼────────────────┼────────┼─────────┤\n│           │ --tool         │ o/o    │ o/o     │\n│       1.  │                │        │         │\n├───────────┼────────────────┼────────┼─────────┤\n│           │ HGMERGE        │ o/o    │ o/o     │\n│       2.  │                │        │         │\n├───────────┼────────────────┼────────┼─────────┤\n│           │ merge-patterns │ o/o(*) │ x/?(*)  │\n│       3.  │                │        │         │\n├───────────┼────────────────┼────────┼─────────┤\n│           │ ui.merge       │ x/?(*) │ x/?(*)  │\n│       4.  │                │        │         │\n└───────────┴────────────────┴────────┴─────────┘\n\nEach capability column indicates Mercurial behavior for internal/external merge tools at  ex‐\namining each rule.\n\n• \"o\": \"assume that a tool has capability\"\n\n• \"x\": \"assume that a tool does not have capability\"\n\n• \"?\": \"check actual capability of a tool\"\n\nIf  merge.strict-capability-check  configuration  is  true,  Mercurial checks capabilities of\nmerge tools strictly in (*) cases above (= each capability column becomes \"?/?\"). It is false\nby default for backward compatibility.\n\nNote   After  selecting a merge program, Mercurial will by default attempt to merge the files\nusing a simple merge algorithm first. Only if it doesn't succeed because of  conflict‐\ning changes will Mercurial actually execute the merge program. Whether to use the sim‐\nple merge algorithm first can be controlled by the premerge setting of the merge tool.\nPremerge is enabled by default unless the file is binary or a symlink.\n\nSee  the  merge-tools  and  ui  sections of hgrc(5) for details on the configuration of merge\ntools.\n\n### PAGER SUPPORT\n\nSome Mercurial commands can produce a lot of output, and Mercurial  will  attempt  to  use  a\npager to make those commands more pleasant.\n\nTo set the pager that should be used, set the application variable:\n\n[pager]\npager = less -FRX\n\nIf  no  pager  is set in the user or repository configuration, Mercurial uses the environment\nvariable $PAGER. If $PAGER is not set, pager.pager from the default or  system  configuration\nis  used.  If none of these are set, a default pager will be used, typically less on Unix and\nmore on Windows.\n\nOn Windows, more is not color aware, so using it effectively disables color.  MSYS and Cygwin\nshells  provide less as a pager, which can be configured to support ANSI color codes.  See hg\nhelp config.color.pagermode to configure the color mode when invoking a pager.\n\nYou can disable the pager for certain commands by adding them to the pager.ignore list:\n\n[pager]\nignore = version, help, update\n\nTo ignore global commands like hg version or hg help, you have to specify them in  your  user\nconfiguration file.\n\nTo  control  whether  the  pager  is  used  at  all  for  an  individual command, you can use\n--pager=<value>:\n\n• use as needed: auto.\n\n• require the pager: yes or on.\n\n• suppress the pager: no or off (any unrecognized value will also work).\n\nTo globally turn off all attempts to use a pager, set:\n\n[ui]\npaginate = never\n\nwhich will prevent the pager from running.\n\n### FILE NAME PATTERNS\n\nMercurial accepts several notations for identifying one or more files at a time.\n\nBy default, Mercurial treats filenames verbatim without pattern  matching,  relative  to  the\ncurrent  working directory. Note that your system shell might perform pattern matching of its\nown before passing filenames into Mercurial.\n\nAlternate pattern notations must be specified explicitly.\n\nNote   Patterns specified in .hgignore are not rooted.  Please see hg help  hgignore for  de‐\ntails.\n\nTo  use a plain path name without any pattern matching, start it with path:. These path names\nmust completely match starting at the current repository root, and when the path points to  a\ndirectory,  it is matched recursively. To match all files in a directory non-recursively (not\nincluding any files in subdirectories), rootfilesin: can be used, specifying an absolute path\n(relative to the repository root).\n\nTo  use an extended glob, start a name with glob:. Globs are rooted at the current directory;\na glob such as *.c will only match files in the current directory ending with  .c.  rootglob:\ncan be used instead of glob: for a glob that is rooted at the root of the repository.\n\nThe  supported  glob  syntax extensions are  to match any string across path separators and\n{a,b} to mean \"a or b\".\n\nTo use a Perl/Python regular expression, start a name with re:.  Regexp pattern  matching  is\nanchored at the root of the repository.\n\nTo  read name patterns from a file, use listfile: or listfile0:.  The latter expects null de‐\nlimited patterns while the former expects line feeds. Each string read from the file  is  it‐\nself treated as a file pattern.\n\nTo  read  a  set of patterns from a file, use include: or subinclude:.  include: will use all\nthe patterns from the given file and treat them as if  they  had  been  passed  in  manually.\nsubinclude:  will  only apply the patterns against files that are under the subinclude file's\ndirectory. See hg help hgignore for details on the format of these files.\n\nAll patterns, except for glob: specified in command line (not for  -I  or  -X  options),  can\nmatch  also against directories: files under matched directories are treated as matched.  For\n\n#### -I -X\n\nPlain examples:\n\npath:foo/bar        a name bar in a directory named foo in the root\nof the repository\npath:path:name      a file or directory named \"path:name\"\nrootfilesin:foo/bar the files in a directory called foo/bar, but not any files\nin its subdirectories and not a file bar in directory foo\n\nGlob examples:\n\nglob:*.c       any name ending in \".c\" in the current directory\n*.c            any name ending in \".c\" in the current directory\n.c           any name ending in \".c\" in any subdirectory of the\ncurrent directory including itself.\nfoo/*          any file in directory foo\nfoo/         any file in directory foo plus all its subdirectories,\nrecursively\nfoo/*.c        any name ending in \".c\" in the directory foo\nfoo/.c       any name ending in \".c\" in any subdirectory of foo\nincluding itself.\nrootglob:*.c   any name ending in \".c\" in the root of the repository\n\nRegexp examples:\n\nre:.*\\.c$      any name ending in \".c\", anywhere in the repository\n\nFile examples:\n\nlistfile:list.txt  read list from list.txt with one file pattern per line\nlistfile0:list.txt read list from list.txt with null byte delimiters\n\nSee also hg help filesets.\n\nInclude examples:\n\ninclude:path/to/mypatternfile    reads patterns to be applied to all paths\nsubinclude:path/to/subignorefile reads patterns specifically for paths in the\nsubdirectory\n\n### WORKING WITH PHASES\n\n#### What are phases?\n\nPhases are a system for tracking which changesets have been or should be shared.  This  helps\nprevent  common  mistakes  when modifying history (for instance, with the mq or rebase exten‐\nsions).\n\nEach changeset in a repository is in one of the following phases:\n\n• public : changeset is visible on a public server\n\n• draft : changeset is not yet published\n\n• secret : changeset should not be pushed, pulled, or cloned\n\nThese phases are ordered (public < draft < secret) and no changeset can be in a  lower  phase\nthan  its  ancestors. For instance, if a changeset is public, all its ancestors are also pub‐\nlic. Lastly, changeset phases should only be changed towards the public phase.\n\n#### How are phases managed?\n\nFor the most part, phases should work transparently. By default, a changeset  is  created  in\nthe draft phase and is moved into the public phase when it is pushed to another repository.\n\nOnce  changesets  become public, extensions like mq and rebase will refuse to operate on them\nto prevent creating duplicate changesets.  Phases can also be manually manipulated  with  the\nhg phase command if needed. See hg help -v phase for examples.\n\nTo make your commits secret by default, put this in your configuration file:\n\n[phases]\nnew-commit = secret\n\n#### Phases and servers\n\nNormally, all servers are publishing by default. This means:\n\n- all draft changesets that are pulled or cloned appear in phase\npublic on the client\n\n- all draft changesets that are pushed appear as public on both\nclient and server\n\n- secret changesets are neither pushed, pulled, or cloned\n\nNote   Pulling  a  draft changeset from a publishing server does not mark it as public on the\nserver side due to the read-only nature of pull.\n\nSometimes it may be desirable to push and pull changesets in the draft phase to share  unfin‐\nished  work. This can be done by setting a repository to disable publishing in its configura‐\ntion file:\n\n[phases]\npublish = False\n\nSee hg help config for more information on configuration files.\n\nNote   Servers running older versions of Mercurial are treated as publishing.\n\nNote   Changesets in secret phase are not exchanged with the server. This  applies  to  their\ncontent: file names, file contents, and changeset metadata. For technical reasons, the\nidentifier (e.g. d825e4025e39) of the secret changeset  may  be  communicated  to  the\nserver.\n\n#### Examples\n\n• list changesets in draft or secret phase:\n\nhg log -r \"not public()\"\n\n• change all secret changesets to draft:\n\nhg phase --draft \"secret()\"\n\n• forcibly move the current changeset and descendants from public to draft:\n\nhg phase --force --draft .\n\n• show a list of changeset revisions and each corresponding phase:\n\nhg log --template \"{rev} {phase}\\n\"\n\n• resynchronize draft changesets relative to a remote repository:\n\nhg phase -fd \"outgoing(URL)\"\n\nSee hg help phase for more information on manually manipulating phases.\n\n### SPECIFYING REVISIONS\n\nMercurial supports several ways to specify revisions.\n\n#### Specifying single revisions\n\nA  plain integer is treated as a revision number. Negative integers are treated as sequential\noffsets from the tip, with -1 denoting the tip, -2 denoting the revision prior  to  the  tip,\nand so forth.\n\nA  40-digit  hexadecimal  string  is  treated as a unique revision identifier.  A hexadecimal\nstring less than 40 characters long is treated as a unique revision  identifier  and  is  re‐\nferred to as a short-form identifier. A short-form identifier is only valid if it is the pre‐\nfix of exactly one full-length identifier.\n\nAny other string is treated as a bookmark, tag, or branch  name.  A  bookmark  is  a  movable\npointer  to  a  revision. A tag is a permanent name associated with a revision. A branch name\ndenotes the tipmost open branch head of that branch - or if they are all closed, the  tipmost\nclosed  head  of the branch. Bookmark, tag, and branch names must not contain the \":\" charac‐\nter.\n\nThe reserved name \"tip\" always identifies the most recent revision.\n\nThe reserved name \"null\" indicates the null revision. This is the revision of an empty repos‐\nitory, and the parent of revision 0.\n\nThe  reserved  name  \".\"  indicates  the working directory parent. If no working directory is\nchecked out, it is equivalent to null. If an uncommitted merge is in progress, \".\" is the re‐\nvision of the first parent.\n\nFinally, commands that expect a single revision (like hg update) also accept revsets (see be‐\nlow for details). When given a revset, they use the last revision of the revset. A  few  com‐\nmands accept two single revisions (like hg diff). When given a revset, they use the first and\nthe last revisions of the revset.\n\n#### Specifying multiple revisions\n\nMercurial supports a functional language for selecting a set  of  revisions.  Expressions  in\nthis language are called revsets.\n\nThe language supports a number of predicates which are joined by infix operators. Parenthesis\ncan be used for grouping.\n\nIdentifiers such as branch names may need quoting with single or double quotes if  they  con‐\ntain characters like - or if they match one of the predefined predicates.\n\nSpecial  characters  can  be  used in quoted identifiers by escaping them, e.g., \\n is inter‐\npreted as a newline. To prevent them from being interpreted, strings can be prefixed with  r,\ne.g. r'...'.\n\n#### Operators\n\nThere is a single prefix operator:\n\n#### not x\n\nChangesets not in x. Short form is ! x.\n\nThese are the supported infix operators:\n\n#### x::y\n\nA  DAG range, meaning all changesets that are descendants of x and ancestors of y, in‐\ncluding x and y themselves. If the first endpoint is left out, this is  equivalent  to\nancestors(y), if the second is left out it is equivalent to descendants(x).\n\nAn alternative syntax is x..y.\n\n#### x:y\n\nAll  changesets with revision numbers between x and y, both inclusive. Either endpoint\ncan be left out, they default to 0 and tip.\n\n#### x and y\n\nThe intersection of changesets in x and y. Short form is x & y.\n\n#### x or y\n\nThe union of changesets in x and y. There are two alternative short forms: x | y and x\n+ y.\n\n#### x - y\n\nChangesets in x but not in y.\n\n#### x % y\n\nChangesets  that  are ancestors of x but not ancestors of y (i.e. ::x - ::y).  This is\nshorthand notation for only(x, y) (see below). The second argument is optional and, if\nleft out, is equivalent to only(x).\n\n#### x^n\n\nThe  nth parent of x, n == 0, 1, or 2.  For n == 0, x; for n == 1, the first parent of\neach changeset in x; for n == 2, the second parent of changeset in x.\n\n#### x~n\n\nThe nth first ancestor of x; x~0 is x; x~3 is x^^^.  For n < 0,  the  nth  unambiguous\ndescendent of x.\n\n#### x ## y\n\nConcatenate strings and identifiers into one string.\n\nAll  other  prefix, infix and postfix operators have lower priority than ##. For exam‐\nple, a1 ## a2~2 is equivalent to (a1 ## a2)~2.\n\nFor example:\n\n[revsetalias]\nissue(a1) = grep(r'\\bissue[ :]?' ## a1 ## r'\\b|\\bbug\\(' ## a1 ## r'\\)')\n\nissue(1234) is equivalent to grep(r'\\bissue[ :]?1234\\b|\\bbug\\(1234\\)') in  this  case.\nThis matches against all of \"issue 1234\", \"issue:1234\", \"issue1234\" and \"bug(1234)\".\n\nThere is a single postfix operator:\n\nx^\n\nEquivalent to x^1, the first parent of each changeset in x.\n\n#### Patterns\n\nWhere noted, predicates that perform string matching can accept a pattern string. The pattern\nmay be either a literal, or a regular expression. If the pattern starts with re:, the remain‐\nder of the pattern is treated as a regular expression. Otherwise, it is treated as a literal.\nTo match a pattern that actually starts with re:, use the prefix literal:.\n\nMatching is case-sensitive, unless otherwise noted.  To perform a case- insensitive match  on\na case-sensitive predicate, use a regular expression, prefixed with (?i).\n\nFor example, tag(r're:(?i)release') matches \"release\" or \"RELEASE\" or \"Release\", etc.\n\n#### Predicates\n\nThe following predicates are supported:\n\n#### adds(pattern)\n\nChangesets that add a file matching pattern.\n\nThe pattern without explicit kind like glob: is expected to be relative to the current\ndirectory and match against a file or a directory.\n\n#### all()\n\nAll changesets, the same as 0:tip.\n\nancestor(*changeset)\n\nA greatest common ancestor of the changesets.\n\nAccepts 0 or more changesets.  Will return empty list when passed no  args.   Greatest\ncommon ancestor of a single changeset is that changeset.\n\n#### ancestors(set[, depth])\n\nChangesets  that  are  ancestors  of changesets in set, including the given changesets\nthemselves.\n\nIf depth is specified, the result only includes changesets up to the specified genera‐\ntion.\n\n#### author(string)\n\nAlias for user(string).\n\n#### bisect(string)\n\nChangesets marked in the specified bisect status:\n\n• good, bad, skip: csets explicitly marked as good/bad/skip\n\n• goods, bads      : csets topologically good/bad\n\n• range              : csets taking part in the bisection\n\n• pruned             : csets that are goods, bads or skipped\n\n• untested           : csets whose fate is yet unknown\n\n• ignored            : csets ignored due to DAG topology\n\n• current            : the cset currently being bisected\n\n#### bookmark([name])\n\nThe named bookmark or all bookmarks.\n\nPattern matching is supported for name. See hg help revisions.patterns.\n\n#### branch(string or set)\n\nAll changesets belonging to the given branch or the branches of the given changesets.\n\nPattern matching is supported for string. See hg help revisions.patterns.\n\n#### branchpoint()\n\nChangesets with more than one child.\n\n#### bundle()\n\nChangesets in the bundle.\n\nBundle must be specified by the -R option.\n\n#### children(set)\n\nChild changesets of changesets in set.\n\n#### closed()\n\nChangeset is closed.\n\n#### commonancestors(set)\n\nChangesets that are ancestors of every changeset in set.\n\n#### conflictlocal()\n\nThe local side of the merge, if currently in an unresolved merge.\n\n\"merge\" here includes merge conflicts from e.g. 'hg rebase' or 'hg graft'.\n\n#### conflictother()\n\nThe other side of the merge, if currently in an unresolved merge.\n\n\"merge\" here includes merge conflicts from e.g. 'hg rebase' or 'hg graft'.\n\n#### contains(pattern)\n\nThe  revision's  manifest  contains a file matching pattern (but might not modify it).\nSee hg help patterns for information about file patterns.\n\nThe pattern without explicit kind like glob: is expected to be relative to the current\ndirectory and match against a file exactly for efficiency.\n\n#### converted([id])\n\nChangesets  converted  from  the given identifier in the old repository if present, or\nall converted changesets if no identifier is specified.\n\n#### date(interval)\n\nChangesets within the interval, see hg help dates.\n\n#### desc(string)\n\nSearch commit message for string. The match is case-insensitive.\n\nPattern matching is supported for string. See hg help revisions.patterns.\n\n#### descendants(set[, depth])\n\nChangesets which are descendants of changesets in set, including the given  changesets\nthemselves.\n\nIf depth is specified, the result only includes changesets up to the specified genera‐\ntion.\n\n#### destination([set])\n\nChangesets that were created by a graft, transplant  or  rebase  operation,  with  the\ngiven  revisions  specified  as  the source.  Omitting the optional set is the same as\npassing all().\n\n#### diffcontains(pattern)\n\nSearch revision differences for when the pattern was added or removed.\n\nThe pattern may be a substring literal or a regular  expression.  See  hg  help  revi‐‐\nsions.patterns.\n\n#### draft()\n\nChangeset in draft phase.\n\n#### expectsize(set[, size])\n\nReturn  the given revset if size matches the revset size.  Abort if the revset doesn't\nexpect given size.  size can either be an integer range or an integer.\n\nFor example, expectsize(0:1, 3:5) will abort as revset size is 2 and 2 is not  between\n3 and 5 inclusive.\n\n#### extra(label, [value])\n\nChangesets with the given label in the extra metadata, with the given optional value.\n\nPattern matching is supported for value. See hg help revisions.patterns.\n\n#### file(pattern)\n\nChangesets affecting files matched by pattern.\n\nFor a faster but less accurate result, consider using filelog() instead.\n\nThis predicate uses glob: as the default kind of pattern.\n\n#### filelog(pattern)\n\nChangesets connected to the specified filelog.\n\nFor  performance  reasons,  visits only revisions mentioned in the file-level filelog,\nrather than filtering through all changesets (much faster, but doesn't include deletes\nor duplicate changes). For a slower, more accurate result, use file().\n\nThe pattern without explicit kind like glob: is expected to be relative to the current\ndirectory and match against a file exactly for efficiency.\n\n#### first(set, [n])\n\nAn alias for limit().\n\n#### follow([file[, startrev]])\n\nAn alias for ::. (ancestors of the working directory's first parent).  If file pattern\nis  specified,  the histories of files matching given pattern in the revision given by\nstartrev are followed, including copies.\n\n#### followlines(file, fromline:toline[, startrev=., descend=False])\n\nChangesets modifying file in line range ('fromline', 'toline').\n\nLine range corresponds to 'file' content at 'startrev' and should hence be  consistent\nwith file size. If startrev is not specified, working directory's parent is used.\n\nBy default, ancestors of 'startrev' are returned. If 'descend' is True, descendants of\n'startrev' are returned though renames are (currently) not followed in this direction.\n\n#### grep(regex)\n\nLike keyword(string) but accepts a regex. Use grep(r'...') to  ensure  special  escape\ncharacters are handled correctly. Unlike keyword(string), the match is case-sensitive.\n\n#### head()\n\nChangeset is a named branch head.\n\n#### heads(set)\n\nMembers of set with no children in set.\n\n#### hidden()\n\nHidden changesets.\n\n#### id(string)\n\nRevision non-ambiguously specified by the given hex string prefix.\n\n#### keyword(string)\n\nSearch  commit message, user name, and names of changed files for string. The match is\ncase-insensitive.\n\nFor a regular expression or case sensitive search of these fields, use grep(regex).\n\n#### last(set, [n])\n\nLast n members of set, defaulting to 1.\n\n#### limit(set[, n[, offset]])\n\nFirst n members of set, defaulting to 1, starting from offset.\n\n#### matching(revision [, field])\n\nChangesets in which a given set of fields match the set of fields in the selected  re‐\nvision or set.\n\nTo  match  more  than  one  field pass the list of fields to match separated by spaces\n(e.g. author description).\n\nValid fields are most regular revision fields and some special fields.\n\nRegular revision fields are description, author, branch, date, files, phase,  parents,\nsubstate,  user  and diff.  Note that author and user are synonyms. diff refers to the\ncontents of the revision. Two revisions matching their  diff  will  also  match  their\nfiles.\n\nSpecial  fields  are  summary  and metadata: summary matches the first line of the de‐\nscription.  metadata is equivalent to matching description user date (i.e. it  matches\nthe main metadata fields).\n\nmetadata  is  the  default  field  which is used when no fields are specified. You can\nmatch more than one field at a time.\n\n#### max(set)\n\nChangeset with highest revision number in set.\n\n#### merge()\n\nChangeset is a merge changeset.\n\n#### min(set)\n\nChangeset with lowest revision number in set.\n\n#### modifies(pattern)\n\nChangesets modifying files matched by pattern.\n\nThe pattern without explicit kind like glob: is expected to be relative to the current\ndirectory and match against a file or a directory.\n\n#### named(namespace)\n\nThe changesets in a given namespace.\n\nPattern matching is supported for namespace. See hg help revisions.patterns.\n\n#### nodefromfile(path)\n\nAn alias for ::. (ancestors of the working directory's first parent).  If file pattern\nis specified, the histories of files matching given pattern in the revision  given  by\nstartrev are followed, including copies.\n\n#### none()\n\nNo changesets.\n\n#### only(set, [set])\n\nChangesets  that  are  ancestors  of the first set that are not ancestors of any other\nhead in the repo. If a second set is specified, the result is ancestors of  the  first\nset that are not ancestors of the second set (i.e. ::<set1> - ::<set2>).\n\n#### origin([set])\n\nChangesets that were specified as a source for the grafts, transplants or rebases that\ncreated the given revisions.  Omitting the optional set is the same as passing  all().\nIf  a changeset created by these operations is itself specified as a source for one of\nthese operations, only the source changeset for the first operation is selected.\n\n#### outgoing([path])\n\nChangesets not found in the specified destination repository, or the default push  lo‐\ncation.\n\nIf  the location resolve to multiple repositories, the union of all outgoing changeset\nwill be used.\n\n#### p1([set])\n\nFirst parent of changesets in set, or the working directory.\n\n#### p2([set])\n\nSecond parent of changesets in set, or the working directory.\n\n#### parents([set])\n\nThe set of all parents for all changesets in set, or the working directory.\n\n#### present(set)\n\nAn empty set, if any revision in set isn't found; otherwise, all revisions in set.\n\nIf any of specified revisions is not present in the local  repository,  the  query  is\nnormally aborted. But this predicate allows the query to continue even in such cases.\n\n#### public()\n\nChangeset in public phase.\n\n#### remote([id [,path]])\n\nLocal  revision  that  corresponds  to the given identifier in a remote repository, if\npresent. Here, the '.' identifier is a synonym for the current local branch.\n\n#### removes(pattern)\n\nChangesets which remove files matching pattern.\n\nThe pattern without explicit kind like glob: is expected to be relative to the current\ndirectory and match against a file or a directory.\n\n#### rev(number)\n\nRevision with the given numeric identifier.\n\n#### reverse(set)\n\nReverse order of set.\n\n#### revset(set)\n\nStrictly interpret the content as a revset.\n\nThe  content  of  this special predicate will be strictly interpreted as a revset. For\nexample, revset(id(0)) will be interpreted as \"id(0)\" without possible ambiguity  with\na \"id(0)\" bookmark or tag.\n\n#### roots(set)\n\nChangesets in set with no parent changeset in set.\n\n#### secret()\n\nChangeset in secret phase.\n\n#### sort(set[, [-]key... [, ...]])\n\nSort  set  by keys. The default sort order is ascending, specify a key as -key to sort\nin descending order.\n\nThe keys can be:\n\n• rev for the revision number,\n\n• branch for the branch name,\n\n• desc for the commit message (description),\n\n• user for user name (author can be used as an alias),\n\n• date for the commit date\n\n• topo for a reverse topographical sort\n\n• node the nodeid of the revision\n\nThe topo sort order cannot be combined with other sort keys. This sort takes  one  op‐\ntional argument, topo.firstbranch, which takes a revset that specifies what topograph‐\nical branches to prioritize in the sort.\n\n#### subrepo([pattern])\n\nChangesets that add, modify or remove the given subrepo.  If  no  subrepo  pattern  is\nnamed, any subrepo changes are returned.\n\n#### tag([name])\n\nThe specified tag by name, or all tagged revisions if no name is given.\n\nPattern matching is supported for name. See hg help revisions.patterns.\n\n#### user(string)\n\nUser name contains string. The match is case-insensitive.\n\nPattern matching is supported for string. See hg help revisions.patterns.\n\n#### Aliases\n\nNew  predicates (known as \"aliases\") can be defined, using any combination of existing predi‐\ncates or other aliases. An alias definition looks like:\n\n<alias> = <definition>\n\nin the revsetalias section of a Mercurial configuration file. Arguments of the form  a1,  a2,\netc. are substituted from the alias into the definition.\n\nFor example,\n\n[revsetalias]\nh = heads()\nd(s) = sort(s, date)\nrs(s, k) = reverse(sort(s, k))\n\ndefines  three  aliases,  h,  d,  and  rs.  rs(0:tip,  author)  is  exactly equivalent to re‐‐\nverse(sort(0:tip, author)).\n\n#### Equivalents\n\nCommand line equivalents for hg log:\n\n-f    ->  ::.\n-d x  ->  date(x)\n-k x  ->  keyword(x)\n-m    ->  merge()\n-u x  ->  user(x)\n-b x  ->  branch(x)\n-P x  ->  !::x\n-l x  ->  limit(expr, x)\n\n#### Examples\n\nSome sample queries:\n\n• Changesets on the default branch:\n\nhg log -r \"branch(default)\"\n\n• Changesets on the default branch since tag 1.5 (excluding merges):\n\nhg log -r \"branch(default) and 1.5:: and not merge()\"\n\n• Open branch heads:\n\nhg log -r \"head() and not closed()\"\n\n• Changesets between tags 1.3 and 1.5 mentioning \"bug\" that affect hgext/*:\n\nhg log -r \"1.3::1.5 and keyword(bug) and file('hgext/*')\"\n\n• Changesets committed in May 2008, sorted by user:\n\nhg log -r \"sort(date('May 2008'), user)\"\n\n• Changesets mentioning \"bug\" or \"issue\" that are not in a tagged release:\n\nhg log -r \"(keyword(bug) or keyword(issue)) and not ancestors(tag())\"\n\n• Update to the commit that bookmark @ is pointing to, without activating the bookmark  (this\nworks because the last revision of the revset is used):\n\nhg update :@\n\n• Show  diff between tags 1.3 and 1.5 (this works because the first and the last revisions of\nthe revset are used):\n\nhg diff -r 1.3::1.5\n\n### RUST IN MERCURIAL\n\nMercurial can be augmented with Rust extensions for speeding up certain operations.\n\n#### Compatibility\n\nThough the Rust extensions are only tested by the project under Linux, users of MacOS,  Free‐\nBSD  and  other UNIX-likes have been using the Rust extensions. Your mileage may vary, but by\nall means do give us feedback or signal your interest for better support.\n\nNo Rust extensions are available for Windows at this time.\n\n#### Features\n\nThe following operations are sped up when using Rust:\n\n• discovery of differences between repositories (pull/push)\n\n• nodemap (see hg help config.format.use-persistent-nodemap)\n\n• all commands using the dirstate (status, commit, diff, add, update, etc.)\n\n• dirstate-v2 (see hg help config.format.use-dirstate-v2)\n\n• iteration over ancestors in a graph\n\nMore features are in the works, and improvements on the above listed are still  in  progress.\nFor more experimental work see the \"rhg\" section.\n\n#### Checking for Rust\n\nYou may already have the Rust extensions depending on how you install Mercurial.\n\n$ hg debuginstall | grep -i rust checking Rust extensions (installed) checking module pol‐\nicy (rust+c-allow)\n\nIf those lines don't even exist, you're using an old version of hg which does  not  have  any\nRust extensions yet.\n\n#### Installing\n\nYou will need cargo to be in your $PATH. See the \"MSRV\" section for which version to use.\n\n#### Using pip\n\nUsers of pip can install the Rust extensions with the following command:\n\n$ pip install mercurial --global-option --rust --no-use-pep517\n\n--no-use-pep517  is  here  to  tell  pip  to preserve backwards compatibility with the legacy\nsetup.py system. Mercurial has not yet migrated its complex setup to the new  system,  so  we\nstill need this to add compiled extensions.\n\nThis might take a couple of minutes because you're compiling everything.\n\nSee the \"Checking for Rust\" section to see if the install succeeded.\n\n#### From your distribution\n\nSome  distributions  are  shipping  Mercurial  with  Rust extensions enabled and pre-compiled\n(meaning you won't have to install cargo), or allow you to specify  an  install  flag.  Check\nwith  your  specific  distribution  for  how to do that, or ask their team to add support for\nhg+Rust!\n\n#### From source\n\nPlease refer to the rust/README.rst file in the Mercurial repository for instructions on  how\nto install from source.\n\nMSRV\nThe minimum supported Rust version is currently 1.48.0. The project's policy is to follow the\nversion from Debian stable, to make the distributions' job easier.\n\n#### rhg\n\nThere exists an experimental pure-Rust version of Mercurial called rhg with a fallback mecha‐\nnism  for  unsupported  invocations.  It allows for much faster execution of certain commands\nwhile adding no discernable overhead for the rest.\n\nThe only way of trying it out is by building it from source. Please refer to  rust/README.rst\nin the Mercurial repository.\n\n#### Contributing\n\nIf you would like to help the Rust endeavor, please refer to rust/README.rst in the Mercurial\nrepository.\n\n### USING MERCURIAL FROM SCRIPTS AND AUTOMATION\n\nIt is common for machines (as opposed to humans) to consume Mercurial.  This help  topic  de‐\nscribes some of the considerations for interfacing machines with Mercurial.\n\n#### Choosing an Interface\n\nMachines have a choice of several methods to interface with Mercurial.  These include:\n\n• Executing the hg process\n\n• Querying a HTTP server\n\n• Calling out to a command server\n\nExecuting hg processes is very similar to how humans interact with Mercurial in the shell. It\nshould already be familiar to you.\n\nhg serve can be used to start a server. By default, this will start a  \"hgweb\"  HTTP  server.\nThis HTTP server has support for machine-readable output, such as JSON. For more, see hg help\nhgweb.\n\nhg serve can also start a \"command server.\" Clients can connect to this server and issue Mer‐\ncurial  commands  over a special protocol.  For more details on the command server, including\nlinks to client libraries, see https://www.mercurial-scm.org/wiki/CommandServer.\n\nhg serve based interfaces (the hgweb and command servers) have the advantage over  simple  hg\nprocess invocations in that they are likely more efficient. This is because there is signifi‐\ncant overhead to spawn new Python processes.\n\nTip    If you need to invoke several hg processes in short order and/or performance is impor‐\ntant to you, use of a server-based interface is highly recommended.\n\n#### Environment Variables\n\nAs  documented  in hg help environment, various environment variables influence the operation\nof Mercurial. The following are particularly relevant for machines consuming Mercurial:\n\nHGPLAIN\nIf not set, Mercurial's output could be influenced by configuration settings that  im‐\npact its encoding, verbose mode, localization, etc.\n\nIt is highly recommended for machines to set this variable when invoking hg processes.\n\nHGENCODING\nIf not set, the locale used by Mercurial will be detected from the environment. If the\ndetermined locale does not support display of certain characters, Mercurial may render\nthese character sequences incorrectly (often by using \"?\" as a placeholder for invalid\ncharacters in the current locale).\n\nExplicitly setting this environment variable is a good practice to  guarantee  consis‐\ntent results. \"utf-8\" is a good choice on UNIX-like environments.\n\nHGRCPATH\nIf  not set, Mercurial will inherit config options from config files using the process\ndescribed in hg help config. This  includes  inheriting  user  or  system-wide  config\nfiles.\n\nWhen utmost control over the Mercurial configuration is desired, the value of HGRCPATH\ncan be set to an explicit file with known good configs. In rare cases, the  value  can\nbe  set to an empty file or the null device (often /dev/null) to bypass loading of any\nuser or system config files. Note that these approaches  can  have  unintended  conse‐\nquences, as the user and system config files often define things like the username and\nextensions that may be required to interface with a repository.\n\nHGRCSKIPREPO\nWhen set, the .hg/hgrc from repositories are not read.\n\nNote that not reading the repository's configuration can have unintended consequences,\nas the repository config files can define things like extensions that are required for\naccess to the repository.\n\n#### Command-line Flags\n\nMercurial's default command-line parser is designed for humans, and is not robust against ma‐\nlicious  input.  For  instance,  you  can start a debugger by passing --debugger as an option\nvalue:\n\n$ REV=--debugger sh -c 'hg log -r \"$REV\"'\n\nThis happens because several command-line flags need to be scanned without using  a  concrete\ncommand table, which may be modified while loading repository settings and extensions.\n\nSince  Mercurial  4.4.2,  the  parsing  of  such  flags  may  be  restricted  by  setting HG‐‐\nPLAIN=+strictflags. When this feature is enabled, all early  options  (e.g.  -R/--repository,\n--cwd,  --config) must be specified first amongst the other global options, and cannot be in‐\njected to an arbitrary location:\n\n$ HGPLAIN=+strictflags hg -R \"$REPO\" log -r \"$REV\"\n\nIn earlier Mercurial versions where +strictflags isn't available, you can mitigate the  issue\nby concatenating an option value with its flag:\n\n$ hg log -r\"$REV\" --keyword=\"$KEYWORD\"\n\n#### Consuming Command Output\n\nIt  is  common  for  machines  to need to parse the output of Mercurial commands for relevant\ndata. This section describes the various techniques for doing so.\n\n#### Parsing Raw Command Output\n\nLikely the simplest and most effective solution for consuming command output is to simply in‐\nvoke hg commands as you would as a user and parse their output.\n\nThe output of many commands can easily be parsed with tools like grep, sed, and awk.\n\nA  potential  downside  with parsing command output is that the output of commands can change\nwhen Mercurial is upgraded. While Mercurial does generally strive for strong  backwards  com‐\npatibility, command output does occasionally change. Having tests for your automated interac‐\ntions with hg commands is generally recommended, but is even more important when raw  command\noutput parsing is involved.\n\n#### Using Templates to Control Output\n\nMany  hg commands support templatized output via the -T/--template argument. For more, see hg\nhelp templates.\n\nTemplates are useful for explicitly controlling output so that you get exactly the  data  you\nwant  formatted  how you want it. For example, log -T {node}\\n can be used to print a newline\ndelimited list of changeset nodes instead of  a  human-tailored  output  containing  authors,\ndates, descriptions, etc.\n\nTip    If  parsing  raw  command  output is too complicated, consider using templates to make\nyour life easier.\n\nThe -T/--template argument allows specifying pre-defined styles.  Mercurial  ships  with  the\nmachine-readable  styles  cbor,  json, and xml, which provide CBOR, JSON, and XML output, re‐\nspectively.  These are useful for producing output that is machine readable as-is.\n\n(Mercurial 5.0 is required for CBOR style.)\n\nImportant\nThe json and xml styles are considered experimental. While they may be  attractive  to\nuse  for easily obtaining machine-readable output, their behavior may change in subse‐\nquent versions.\n\nThese styles may also exhibit unexpected results when dealing with certain  encodings.\nMercurial  treats  things  like filenames as a series of bytes and normalizing certain\nbyte sequences to JSON or XML with certain encoding settings can lead to surprises.\n\n#### Command Server Output\n\nIf using the command server to interact with Mercurial, you are likely using an existing  li‐\nbrary/API  that abstracts implementation details of the command server. If so, this interface\nlayer may perform parsing for you, saving you the work of implementing it yourself.\n\n#### Output Verbosity\n\nCommands often have varying output verbosity, even when machine  readable  styles  are  being\nused  (e.g. -T json). Adding -v/--verbose and --debug to the command's arguments can increase\nthe amount of data exposed by Mercurial.\n\nAn alternate way to get the data you need is by explicitly specifying a template.\n\n#### Other Topics\n\n#### revsets\n\nRevisions sets is a functional query language for selecting a set of revisions.  Think\nof  it as SQL for Mercurial repositories. Revsets are useful for querying repositories\nfor specific data.\n\nSee hg help revsets for more.\n\n#### share extension\n\nThe share extension provides functionality for sharing repository data across  several\nworking copies. It can even automatically \"pool\" storage for logically related reposi‐\ntories when cloning.\n\nConfiguring the share extension can lead to significant  resource  utilization  reduc‐\ntion, particularly around disk space and the network. This is especially true for con‐\ntinuous integration (CI) environments.\n\nSee hg help -e share for more.\n\n### SUBREPOSITORIES\n\nSubrepositories let you nest external repositories or projects into a parent Mercurial repos‐\nitory, and make commands operate on them as a group.\n\nMercurial currently supports Mercurial, Git, and Subversion subrepositories.\n\nSubrepositories are made of three components:\n\n1. Nested repository checkouts. They can appear anywhere in the parent working directory.\n\n2. Nested  repository  references.  They are defined in .hgsub, which should be placed in the\nroot of working directory, and tell where the subrepository checkouts come from. Mercurial\nsubrepositories are referenced like:\n\npath/to/nested = https://example.com/nested/repo/path\n\nGit and Subversion subrepos are also supported:\n\npath/to/nested = [git]git://example.com/nested/repo/path\npath/to/nested = [svn]https://example.com/nested/trunk/path\n\nwhere path/to/nested is the checkout location relatively to the parent Mercurial root, and\nhttps://example.com/nested/repo/path is the source repository path. The  source  can  also\nreference a filesystem path.\n\nNote  that  .hgsub does not exist by default in Mercurial repositories, you have to create\nand add it to the parent repository before using subrepositories.\n\n3. Nested repository states. They are defined in .hgsubstate, which is placed in the root  of\nworking  directory, and capture whatever information is required to restore the subreposi‐\ntories to the state they were committed in a parent repository changeset. Mercurial  auto‐\nmatically record the nested repositories states when committing in the parent repository.\n\nNote\nThe .hgsubstate file should not be edited manually.\n\n#### Adding a Subrepository\n\nIf  .hgsub  does  not exist, create it and add it to the parent repository. Clone or checkout\nthe external projects where you want it to live in the parent repository. Edit .hgsub and add\nthe  subrepository  entry as described above. At this point, the subrepository is tracked and\nthe next commit will record its state in .hgsubstate and bind it to the committed changeset.\n\n#### Synchronizing a Subrepository\n\nSubrepos do not automatically track the latest changeset of their sources. Instead, they  are\nupdated  to  the  changeset  that corresponds with the changeset checked out in the top-level\nchangeset. This is so developers always get a consistent set of compatible code and libraries\nwhen they update.\n\nThus,  updating  subrepos is a manual process. Simply check out target subrepo at the desired\nrevision, test in the top-level repo, then commit in the parent repository to record the  new\ncombination.\n\n#### Deleting a Subrepository\n\nTo  remove a subrepository from the parent repository, delete its reference from .hgsub, then\nremove its files.\n\n#### Interaction with Mercurial Commands\n\nadd    add does not recurse in subrepos unless -S/--subrepos is specified.  However,  if  you\nspecify  the full path of a file in a subrepo, it will be added even without -S/--sub‐\nrepos specified.  Subversion subrepositories are currently silently ignored.\n\n#### addremove\n\naddremove does not recurse into subrepos unless -S/--subrepos is specified.   However,\nif  you specify the full path of a directory in a subrepo, addremove will be performed\non it even without -S/--subrepos being specified.  Git and Subversion  subrepositories\nwill print a warning and continue.\n\n#### archive\n\narchive does not recurse in subrepositories unless -S/--subrepos is specified.\n\ncat    Git  subrepositories  only support exact file matches.  Subversion subrepositories are\ncurrently ignored.\n\ncommit commit creates a consistent snapshot of the state of the entire project and  its  sub‐\nrepositories. If any subrepositories have been modified, Mercurial will abort.  Mercu‐\nrial can be  made  to  instead  commit  all  modified  subrepositories  by  specifying\n-S/--subrepos,  or  setting  \"ui.commitsubrepos=True\"  in a configuration file (see hg\nhelp config).  After there are no longer  any  modified  subrepositories,  it  records\ntheir  state  and finally commits it in the parent repository.  The --addremove option\nalso honors the -S/--subrepos option.  However,  Git  and  Subversion  subrepositories\nwill print a warning and abort.\n\ndiff   diff  does not recurse in subrepos unless -S/--subrepos is specified.  However, if you\nspecify the full path of a file or directory in a subrepo,  it  will  be  diffed  even\nwithout  -S/--subrepos  being  specified.   Subversion  subrepositories  are currently\nsilently ignored.\n\nfiles  files does not recurse into subrepos unless -S/--subrepos is specified.   However,  if\nyou  specify  the  full path of a file or directory in a subrepo, it will be displayed\neven without -S/--subrepos being specified.  Git and  Subversion  subrepositories  are\ncurrently silently ignored.\n\nforget forget currently only handles exact file matches in subrepos.  Git and Subversion sub‐\nrepositories are currently silently ignored.\n\n#### incoming\n\nincoming does not recurse in subrepos unless -S/--subrepos is specified. Git and  Sub‐\nversion subrepositories are currently silently ignored.\n\n#### outgoing\n\noutgoing  does not recurse in subrepos unless -S/--subrepos is specified. Git and Sub‐\nversion subrepositories are currently silently ignored.\n\npull   pull is not recursive since it is not clear what to pull prior to running  hg  update.\nListing and retrieving all subrepositories changes referenced by the parent repository\npulled changesets is expensive at best, impossible in the Subversion case.\n\npush   Mercurial will automatically push all subrepositories first when the parent repository\nis  being pushed. This ensures new subrepository changes are available when referenced\nby top-level repositories.  Push is a no-op for Subversion subrepositories.\n\nserve  serve does not recurse into subrepositories unless -S/--subrepos  is  specified.   Git\nand Subversion subrepositories are currently silently ignored.\n\nstatus status  does  not recurse into subrepositories unless -S/--subrepos is specified. Sub‐\nrepository changes are displayed as regular Mercurial changes on the subrepository el‐\nements. Subversion subrepositories are currently silently ignored.\n\nremove remove  does not recurse into subrepositories unless -S/--subrepos is specified.  How‐\never, if you specify a file or directory path in a subrepo, it will  be  removed  even\nwithout  -S/--subrepos.  Git and Subversion subrepositories are currently silently ig‐\nnored.\n\nupdate update restores the subrepos in the state they were  originally  committed  in  target\nchangeset.  If  the  recorded changeset is not available in the current subrepository,\nMercurial will pull it in first before updating.  This means that updating can require\nnetwork access when using subrepositories.\n\n#### Remapping Subrepositories Sources\n\nA  subrepository  source  location  may change during a project life, invalidating references\nstored in the parent repository history. To fix this, rewriting rules can be defined in  par‐\nent repository hgrc file or in Mercurial configuration. See the [subpaths] section in hgrc(5)\nfor more details.\n\n### TEMPLATE USAGE\n\nMercurial allows you to customize output of commands through templates. You can  either  pass\nin  a template or select an existing template-style from the command line, via the --template\noption.\n\nYou can customize output for any \"log-like\" command: log, outgoing, incoming,  tip,  parents,\nand heads.\n\nSome  built-in styles are packaged with Mercurial. These can be listed with hg log --template\nlist. Example usage:\n\n$ hg log -r1.0::1.1 --template changelog\n\nA template is a piece of text, with markup to invoke variable expansion:\n\n$ hg log -r1 --template \"{node}\\n\"\nb56ce7b07c52de7d5fd79fb89701ea538af65746\n\n#### Keywords\n\nStrings in curly braces are called keywords. The availability of keywords depends on the  ex‐\nact  context of the templater. These keywords are usually available for templating a log-like\ncommand:\n\nfastrank\nthe rank of a changeset if cached\n\nThe rank of a revision is the size of the sub-graph it defines  as  a  head.   Equiva‐\nlently, the rank of a revision r is the size of the set ancestors(r), r included.\n\n#### activebookmark\n\nString. The active bookmark, if it is associated with the changeset.\n\nauthor Alias for {user}\n\nbisect String. The changeset bisection status.\n\n#### bookmarks\n\nList  of strings. Any bookmarks associated with the changeset. Also sets 'active', the\nname of the active bookmark.\n\nbranch String. The name of the branch on which the changeset was committed.\n\n#### changessincelatesttag\n\nInteger. All ancestors not in the latest tag.\n\n#### children\n\nList of strings. The children of the changeset.\n\ndate   Date information. The date when the changeset was committed.\n\ndesc   String. The text of the changeset description.\n\n#### diffstat\n\nString. Statistics of changes with the following format: \"modified files:  +added/-re‐\nmoved lines\"\n\nextras List of dicts with key, value entries of the 'extras' field of this changeset.\n\nfileadds\nList of strings. Files added by this changeset.\n\nfilecopies\nList of strings. Files copied in this changeset with their sources.\n\nfilecopiesswitch\nList of strings. Like \"filecopies\" but displayed only if the --copied switch is set.\n\nfiledels\nList of strings. Files removed by this changeset.\n\nfilemods\nList of strings. Files modified by this changeset.\n\nfiles  List of strings. All files modified, added, or removed by this changeset.\n\n#### graphnode\n\nString. The character representing the changeset node in an ASCII revision graph.\n\n#### graphwidth\n\nInteger. The width of the graph drawn by 'log --graph' or zero.\n\nindex  Integer. The current iteration of the loop. (0 indexed)\n\n#### latesttag\n\nList  of  strings. The global tags on the most recent globally tagged ancestor of this\nchangeset.  If no such tags exist, the list consists of the single string \"null\".\n\n#### latesttagdistance\n\nInteger. Longest path to the latest tag.\n\n#### namespaces\n\nDict of lists. Names attached to this changeset per namespace.\n\nnegrev Integer. The repository-local changeset negative revision number, which counts in  the\nopposite direction.\n\nnode   String. The changeset identification hash, as a 40 hexadecimal digit string.\n\n#### onelinesummary\n\nString.  A one-line summary for the ctx (not including trailing newline).  The default\ntemplate be overridden in command-templates.oneline-summary.\n\np1     Changeset. The changeset's  first  parent.  {p1.rev}  for  the  revision  number,  and\n{p1.node} for the identification hash.\n\np2     Changeset.  The  changeset's  second  parent.  {p2.rev}  for  the revision number, and\n{p2.node} for the identification hash.\n\n#### parents\n\nList of strings. The parents of the changeset in \"rev:node\" format. If  the  changeset\nhas only one \"natural\" parent (the predecessor revision) nothing is shown.\n\n#### peerurls\n\nA dictionary of repository locations defined in the [paths] section of your configura‐\ntion file.\n\nphase  String. The changeset phase name.\n\n#### reporoot\n\nString. The root directory of the current repository.\n\nrev    Integer. The repository-local changeset revision number.\n\n#### subrepos\n\nList of strings. Updated subrepositories in the changeset.\n\ntags   List of strings. Any tags associated with the changeset.\n\n#### termwidth\n\nInteger. The width of the current terminal.\n\nuser   String. The unmodified author of the changeset.\n\n#### verbosity\n\nString. The current output verbosity in 'debug', 'quiet', 'verbose', or ''.\n\nThe \"date\" keyword does not produce human-readable output. If you want to use a date in  your\noutput, you can use a filter to process it. Filters are functions which return a string based\non the input variable. Be sure to use the stringify  filter  first  when  you're  applying  a\nstring-input  filter  to  a list-like input variable.  You can also use a chain of filters to\nget the desired output:\n\n$ hg tip --template \"{date|isodate}\\n\"\n2008-08-21 18:22 +0000\n\n#### Filters\n\nList of filters:\n\n#### addbreaks\n\nAny text. Add an XHTML \"<br />\" tag before the end of every line except the last.\n\nage    Date. Returns a human-readable date/time difference between the  given  date/time  and\nthe current date/time.\n\n#### basename\n\nAny  text. Treats the text as a path, and returns the last component of the path after\nsplitting by the  path  separator.   For  example,  \"foo/bar/baz\"  becomes  \"baz\"  and\n\"foo/bar//\" becomes \"\".\n\ncbor   Any object. Serializes the object to CBOR bytes.\n\n#### commondir\n\nList  of text. Treats each list item as file name with / as path separator and returns\nthe longest common directory prefix shared by  all  list  items.   Returns  the  empty\nstring if no common prefix exists.\n\nThe  list  items are not normalized, i.e. \"foo/../bar\" is handled as file \"bar\" in the\ndirectory \"foo/..\". Leading slashes are ignored.\n\nFor example, [\"foo/bar/baz\", \"foo/baz/bar\"] becomes \"foo\" and [\"foo/bar\",  \"baz\"]  be‐\ncomes \"\".\n\ncount  List or text. Returns the length as an integer.\n\n#### dirname\n\nAny  text.  Treats the text as a path, and strips the last component of the path after\nsplitting by the path separator.\n\ndomain Any text. Finds the first string that looks like an email address, and  extracts  just\nthe domain component. Example: User <user@example.com> becomes example.com.\n\nemail  Any  text.  Extracts  the first string that looks like an email address. Example: User\n<user@example.com> becomes user@example.com.\n\n#### emailuser\n\nAny text. Returns the user portion of an email address.\n\nescape Any text. Replaces the special XML/XHTML characters \"&\", \"<\" and \">\"  with  XML  enti‐\nties, and filters out NUL characters.\n\nfill68 Any text. Wraps the text to fit in 68 columns.\n\nfill76 Any text. Wraps the text to fit in 76 columns.\n\n#### firstline\n\nAny text. Returns the first line of text.\n\nhex    Any  text. Convert a binary Mercurial node identifier into its long hexadecimal repre‐\nsentation.\n\nhgdate Date. Returns the date as a pair of numbers: \"1157407993 25200\" (Unix timestamp, time‐\nzone offset).\n\n#### isodate\n\nDate. Returns the date in ISO 8601 format: \"2009-08-18 13:00 +0200\".\n\n#### isodatesec\n\nDate.  Returns  the  date  in ISO 8601 format, including seconds: \"2009-08-18 13:00:13\n+0200\". See also the rfc3339date filter.\n\njson   Any object. Serializes the object to a JSON formatted text.\n\nlower  Any text. Converts the text to lowercase.\n\n#### nonempty\n\nAny text. Returns '(none)' if the string is empty.\n\n#### obfuscate\n\nAny text. Returns the input text rendered as a sequence of XML entities.\n\nperson Any text. Returns the name before an email address, interpreting it as per RFC 5322.\n\n#### revescape\n\nAny text. Escapes all \"special\" characters, except @.   Forward  slashes  are  escaped\ntwice  to  prevent  web  servers  from prematurely unescaping them. For example, \"@foo\nbar/baz\" becomes \"@foo%20bar%252Fbaz\".\n\n#### rfc3339date\n\nDate.  Returns  a  date  using  the  Internet  date  format  specified  in  RFC  3339:\n\"2009-08-18T13:00:13+02:00\".\n\n#### rfc822date\n\nDate.  Returns  a  date using the same format used in email headers: \"Tue, 18 Aug 2009\n13:00:13 +0200\".\n\nshort  Changeset hash. Returns the short form of a changeset  hash,  i.e.  a  12  hexadecimal\ndigit string.\n\n#### shortbisect\n\nAny  text.  Treats  label as a bisection status, and returns a single-character repre‐\nsenting the status (G: good, B: bad, S: skipped, U:  untested,  I:  ignored).  Returns\nsingle space if text is not a valid bisection status.\n\n#### shortdate\n\nDate. Returns a date like \"2006-09-18\".\n\n#### slashpath\n\nAny text. Replaces the native path separator with slash.\n\n#### splitlines\n\nAny text. Split text into a list of lines.\n\n#### stringify\n\nAny  type.  Turns the value into text by converting values into text and concatenating\nthem.\n\n#### stripdir\n\nTreat the text as path and strip a directory level, if possible.  For  example,  \"foo\"\nand \"foo/bar\" becomes \"foo\".\n\n#### tabindent\n\nAny text. Returns the text, with every non-empty line except the first starting with a\ntab character.\n\nupper  Any text. Converts the text to uppercase.\n\n#### urlescape\n\nAny  text.  Escapes  all  \"special\"  characters.  For  example,  \"foo   bar\"   becomes\n\"foo%20bar\".\n\nuser   Any text. Returns a short representation of a user name or email address.\n\nutf8   Any text. Converts from the local character encoding to UTF-8.\n\nNote  that  a filter is nothing more than a function call, i.e.  expr|filter is equivalent to\nfilter(expr).\n\n#### Functions\n\nIn addition to filters, there are some basic built-in functions:\n\n#### config(section, name[, default])\n\nReturns the requested hgrc config option as a string.\n\n#### configbool(section, name[, default])\n\nReturns the requested hgrc config option as a boolean.\n\n#### configint(section, name[, default])\n\nReturns the requested hgrc config option as an integer.\n\n#### date(date[, fmt])\n\nFormat a date. See hg help dates for formatting strings. The default is  a  Unix  date\nformat, including the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n\n#### dict([[key=]value...])\n\nConstruct  a dict from key-value pairs. A key may be omitted if a value expression can\nprovide an unambiguous name.\n\n#### diff([includepattern [, excludepattern]])\n\nShow a diff, optionally specifying files to include or exclude.\n\n#### files(pattern)\n\nAll files of the current changeset matching the pattern. See hg help patterns.\n\n#### fill(text[, width[, initialident[, hangindent]]])\n\nFill many paragraphs with optional indentation. See the \"fill\" filter.\n\n#### filter(iterable[, expr])\n\nRemove empty elements from a list or a dict. If expr specified, it's applied  to  each\nelement to test emptiness.\n\n#### get(dict, key)\n\nGet  an  attribute/key  from an object. Some keywords are complex types. This function\nallows you to obtain the value of an attribute on these types.\n\n#### if(expr, then[, else])\n\nConditionally execute based on the result of an expression.\n\n#### ifcontains(needle, haystack, then[, else])\n\nConditionally execute based on whether the item \"needle\" is in \"haystack\".\n\n#### ifeq(expr1, expr2, then[, else])\n\nConditionally execute based on whether 2 items are equivalent.\n\n#### indent(text, indentchars[, firstline])\n\nIndents all non-empty lines with the characters given in the  indentchars  string.  An\noptional third parameter will override the indent for the first line only if present.\n\n#### join(list, sep)\n\nJoin items in a list with a delimiter.\n\n#### label(label, expr)\n\nApply  a  label to generated content. Content with a label applied can result in addi‐\ntional post-processing, such as automatic colorization.\n\n#### latesttag([pattern])\n\nThe global tags matching the given pattern on the most recent globally tagged ancestor\nof this changeset.  If no such tags exist, the \"{tag}\" template resolves to the string\n\"null\". See hg help revisions.patterns for the pattern syntax.\n\n#### localdate(date[, tz])\n\nConverts a date to the specified timezone.  The default is local date.\n\n#### mailmap(author)\n\nReturn the author, updated according to the value set in the .mailmap file\n\n#### max(iterable)\n\nReturn the max of an iterable\n\n#### min(iterable)\n\nReturn the min of an iterable\n\n#### mod(a, b)\n\nCalculate a mod b such that a / b + a mod b == a\n\n#### pad(text, width[, fillchar=' '[, left=False[, truncate=False]]])\n\nPad text with a fill character.\n\n#### relpath(path)\n\nConvert a repository-absolute path into a filesystem  path  relative  to  the  current\nworking directory.\n\n#### revset(query[, formatargs...])\n\nExecute a revision set query. See hg help revset.\n\n#### rstdoc(text, style)\n\nFormat reStructuredText.\n\n#### search(pattern, text)\n\nLook  for the first text matching the regular expression pattern.  Groups are accessi‐\nble as {1}, {2}, ... in %-mapped template.\n\n#### separate(sep, args...)\n\nAdd a separator between non-empty arguments.\n\n#### shortest(node, minlength=4)\n\nObtain the shortest representation of a node.\n\n#### startswith(pattern, text)\n\nReturns the value from the \"text\" argument if it begins  with  the  content  from  the\n\"pattern\" argument.\n\n#### strip(text[, chars])\n\nStrip  characters  from  a  string. By default, strips all leading and trailing white‐\nspace.\n\n#### sub(pattern, replacement, expression)\n\nPerform text substitution using regular expressions.\n\n#### subsetparents(rev, revset)\n\nLook up parents of the rev in the sub graph given by the revset.\n\n#### word(number, text[, separator])\n\nReturn the nth word from a string.\n\n#### Operators\n\nWe provide a limited set of infix arithmetic operations on integers:\n\n+ for addition\n- for subtraction\n* for multiplication\n/ for floor division (division rounded to integer nearest -infinity)\n\nDivision fulfills the law x = x / y + mod(x, y).\n\nAlso, for any expression that returns a list, there is a list operator:\n\nexpr % \"{template}\"\n\nAs seen in the above example, {template} is interpreted as a template.  To  prevent  it  from\nbeing interpreted, you can use an escape character \\{ or a raw string prefix, r'...'.\n\nThe dot operator can be used as a shorthand for accessing a sub item:\n\n• expr.member is roughly equivalent to expr % '{member}' if expr returns a non-list/dict. The\nreturned value is not stringified.\n\n• dict.key is identical to get(dict, 'key').\n\n#### Aliases\n\nNew keywords and functions can be defined in the templatealias section of a Mercurial config‐\nuration file:\n\n<alias> = <definition>\n\nArguments of the form a1, a2, etc. are substituted from the alias into the definition.\n\nFor example,\n\n[templatealias]\nr = rev\nrn = \"{r}:{node|short}\"\nleftpad(s, w) = pad(s, w, ' ', True)\n\ndefines two symbol aliases, r and rn, and a function alias leftpad().\n\nIt's  also  possible  to  specify complete template strings, using the templates section. The\nsyntax used is the general template string syntax.\n\nFor example,\n\n[templates]\nnodedate = \"{node|short}: {date(date, \"%Y-%m-%d\")}\\n\"\n\ndefines a template, nodedate, which can be called like:\n\n$ hg log -r . -Tnodedate\n\nA template defined in templates section can also be referenced from another template:\n\n$ hg log -r . -T \"{rev} {nodedate}\"\n\nbut be aware that the keywords cannot be overridden by templates. For example, a template de‐\nfined as templates.rev cannot be referenced as {rev}.\n\nA  template defined in templates section may have sub templates which are inserted before/af‐\nter/between items:\n\n[templates]\nmyjson = ' {dict(rev, node|short)|json}'\nmyjson:docheader = '\\{\\n'\nmyjson:docfooter = '\\n}\\n'\nmyjson:separator = ',\\n'\n\n#### Examples\n\nSome sample command line templates:\n\n• Format lists, e.g. files:\n\n$ hg log -r 0 --template \"files:\\n{files % '  {file}\\n'}\"\n\n• Join the list of files with a \", \":\n\n$ hg log -r 0 --template \"files: {join(files, ', ')}\\n\"\n\n• Join the list of files ending with \".py\" with a \", \":\n\n$ hg log -r 0 --template \"pythonfiles: {join(files('.py'), ', ')}\\n\"\n\n• Separate non-empty arguments by a \" \":\n\n$ hg log -r 0 --template \"{separate(' ', node, bookmarks, tags}\\n\"\n\n• Modify each line of a commit description:\n\n$ hg log --template \"{splitlines(desc) % ' {line}\\n'}\"\n\n• Format date:\n\n$ hg log -r 0 --template \"{date(date, '%Y')}\\n\"\n\n• Display date in UTC:\n\n$ hg log -r 0 --template \"{localdate(date, 'UTC')|date}\\n\"\n\n• Output the description set to a fill-width of 30:\n\n$ hg log -r 0 --template \"{fill(desc, 30)}\"\n\n• Use a conditional to test for the default branch:\n\n$ hg log -r 0 --template \"{ifeq(branch, 'default', 'on the main branch',\n'on branch {branch}')}\\n\"\n\n• Append a newline if not empty:\n\n$ hg tip --template \"{if(author, '{author}\\n')}\"\n\n• Label the output for use with the color extension:\n\n$ hg log -r 0 --template \"{label('changeset.{phase}', node|short)}\\n\"\n\n• Invert the firstline filter, i.e. everything but the first line:\n\n$ hg log -r 0 --template \"{sub(r'^.*\\n?\\n?', '', desc)}\\n\"\n\n• Display the contents of the 'extra' field, one per line:\n\n$ hg log -r 0 --template \"{join(extras, '\\n')}\\n\"\n\n• Mark the active bookmark with '*':\n\n$ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, active, '*')} '}\\n\"\n\n• Find the previous release candidate tag, the distance and changes since the tag:\n\n$ hg log -r . --template \"{latesttag('re:^.*-rc$') % '{tag}, {changes}, {distance}'}\\n\"\n\n• Mark the working copy parent with '@':\n\n$ hg log --template \"{ifcontains(rev, revset('.'), '@')}\\n\"\n\n• Show details of parent revisions:\n\n$ hg log --template \"{revset('parents(%d)', rev) % '{desc|firstline}\\n'}\"\n\n• Show only commit descriptions that start with \"template\":\n\n$ hg log --template \"{startswith('template', firstline(desc))}\\n\"\n\n• Print the first word of each line of a commit message:\n\n$ hg log --template \"{word(0, desc)}\\n\"\n\n### URL PATHS\n\nValid URLs are of the form:\n\nlocal/filesystem/path[#revision]\nfile://local/filesystem/path[#revision]\nhttp://[user[:pass]@]host[:port]/[path][#revision]\nhttps://[user[:pass]@]host[:port]/[path][#revision]\nssh://[user@]host[:port]/[path][#revision]\npath://pathname\n\nPaths in the local filesystem can either point to Mercurial repositories or to  bundle  files\n(as created by hg bundle or hg incoming --bundle). See also hg help paths.\n\nAn  optional  identifier after # indicates a particular branch, tag, or changeset to use from\nthe remote repository. See also hg help revisions.\n\nSome features, such as pushing to http:// and https:// URLs are only possible if the  feature\nis explicitly enabled on the remote Mercurial server.\n\nNote that the security of HTTPS URLs depends on proper configuration of web.cacerts.\n\nSome notes about using SSH with Mercurial:\n\n• SSH requires an accessible shell account on the destination machine and a copy of hg in the\nremote path or specified with remotecmd.\n\n• path is relative to the remote user's home directory by default. Use an extra slash at  the\nstart of a path to specify an absolute path:\n\nssh://example.com//tmp/repository\n\n• Mercurial doesn't use its own compression via SSH; the right thing to do is to configure it\nin your ~/.ssh/config, e.g.:\n\nHost *.mylocalnetwork.example.com\nCompression no\nHost *\nCompression yes\n\nAlternatively specify \"ssh -C\" as your ssh command in your configuration file or  with  the\n--ssh command line option.\n\nThese  URLs  can all be stored in your configuration file with path aliases under the [paths]\nsection like so:\n\n[paths]\nalias1 = URL1\nalias2 = URL2\n...\n\nYou can then use the alias for any command that uses a URL (for example hg  pull  alias1 will\nbe treated as hg pull URL1).\n\nTwo  path  aliases  are special because they are used as defaults when you do not provide the\nURL to a command:\n\n#### default:\n\nWhen you create a repository with hg clone, the clone command saves  the  location  of\nthe  source  repository as the new repository's 'default' path. This is then used when\nyou omit path from push- and pull-like commands (including incoming and outgoing).\n\n#### default-push:\n\nThe push command will look for a path named 'default-push', and prefer  it  over  'de‐\nfault' if both are defined.\n\nThese alias can also be use in the path:// scheme:\n\n[paths]\nalias1 = URL1\nalias2 = path://alias1\n...\n\ncheck hg help config.paths for details about the behavior of such \"sub-path\".\n\n### EXTENSIONS\n\nThis  section contains help for extensions that are distributed together with Mercurial. Help\nfor other extensions is available in the help system.\n\n#### absorb\n\napply working directory changes to changesets (EXPERIMENTAL)\n\nThe absorb extension provides a command to use annotate information to amend modified  chunks\ninto the corresponding non-public changesets.\n\n[absorb]\n# only check 50 recent non-public changesets at most\nmax-stack-size = 50\n# whether to add noise to new commits to avoid obsolescence cycle\nadd-noise = 1\n# make `amend --correlated` a shortcut to the main command\namend-flag = correlated\n\n[color]\nabsorb.description = yellow\nabsorb.node = blue bold\nabsorb.path = bold\n\n#### Commands\n\n#### Change creation\n\n#### absorb\n\nincorporate corrections into the stack of draft changesets:\n\nhg absorb [OPTION] [FILE]...\n\nabsorb analyzes each change in your working directory and attempts to amend the changed lines\ninto the changesets in your stack that first introduced those lines.\n\nIf absorb cannot find an unambiguous changeset to amend for a change,  that  change  will  be\nleft in the working directory, untouched. They can be observed by hg status or hg diff after‐\nwards. In other words, absorb does not write to the working directory.\n\nChangesets outside the revset ::. and not public() and not merge() will not be changed.\n\nChangesets that become empty after applying the changes will be deleted.\n\nBy default, absorb will show what it plans to do and prompt for  confirmation.   If  you  are\nconfident  that  the changes will be absorbed to the correct place, run hg absorb -a to apply\nthe changes immediately.\n\nReturns 0 on success, 1 if all chunks were ignored and nothing amended.\n\nOptions:\n\n#### -a, --apply-changes\n\napply changes without prompting for confirmation\n\n#### -p, --print-changes\n\nalways print which changesets are modified by which changes\n\n#### -i, --interactive\n\ninteractively select which chunks to apply\n\n#### -e, --edit-lines\n\nedit what lines belong to which changesets before commit (EXPERIMENTAL)\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### acl\n\nhooks for controlling repository access\n\nThis hook makes it possible to allow or deny write access to given branches and  paths  of  a\nrepository when receiving incoming changesets via pretxnchangegroup and pretxncommit.\n\nThe  authorization is matched based on the local user name on the system where the hook runs,\nand not the committer of the original changeset (since the latter is merely informative).\n\nThe acl hook is best used along with a restricted shell like hgsh, preventing  authenticating\nusers from doing anything other than pushing or pulling. The hook is not safe to use if users\nhave interactive shell access, as they can then disable the hook. Nor is it  safe  if  remote\nusers share an account, because then there is no way to distinguish them.\n\nThe order in which access checks are performed is:\n\n1. Deny  list for branches (section acl.deny.branches)\n\n2. Allow list for branches (section acl.allow.branches)\n\n3. Deny  list for paths    (section acl.deny)\n\n4. Allow list for paths    (section acl.allow)\n\nThe allow and deny sections take key-value pairs.\n\n#### Branch-based Access Control\n\nUse  the  acl.deny.branches  and acl.allow.branches sections to have branch-based access con‐\ntrol. Keys in these sections can be either:\n\n• a branch name, or\n\n• an asterisk, to match any branch;\n\nThe corresponding values can be either:\n\n• a comma-separated list containing users and groups, or\n\n• an asterisk, to match anyone;\n\nYou can add the \"!\" prefix to a user or group name to invert the sense of the match.\n\n#### Path-based Access Control\n\nUse the acl.deny and acl.allow sections to have path-based access control. Keys in these sec‐\ntions accept a subtree pattern (with a glob syntax by default). The corresponding values fol‐\nlow the same syntax as the other sections above.\n\n#### Bookmark-based Access Control\n\nUse the acl.deny.bookmarks and acl.allow.bookmarks sections  to  have  bookmark-based  access\ncontrol. Keys in these sections can be either:\n\n• a bookmark name, or\n\n• an asterisk, to match any bookmark;\n\nThe corresponding values can be either:\n\n• a comma-separated list containing users and groups, or\n\n• an asterisk, to match anyone;\n\nYou can add the \"!\" prefix to a user or group name to invert the sense of the match.\n\nNote: for interactions between clients and servers using Mercurial 3.6+ a rejection will gen‐\nerally reject the entire push, for interactions involving older clients, the commit  transac‐\ntions will already be accepted, and only the bookmark movement will be rejected.\n\n#### Groups\n\nGroup names must be prefixed with an @ symbol. Specifying a group name has the same effect as\nspecifying all the users in that group.\n\nYou can define group members in the acl.groups section.  If  a  group  name  is  not  defined\nthere,  and  Mercurial  is  running under a Unix-like system, the list of users will be taken\nfrom the OS.  Otherwise, an exception will be raised.\n\n#### Example Configuration\n\n[hooks]\n\n# Use this if you want to check access restrictions at commit time\npretxncommit.acl = python:hgext.acl.hook\n\n# Use this if you want to check access restrictions for pull, push,\n# bundle and serve.\npretxnchangegroup.acl = python:hgext.acl.hook\n\n[acl]\n# Allow or deny access for incoming changes only if their source is\n# listed here, let them pass otherwise. Source is \"serve\" for all\n# remote access (http or ssh), \"push\", \"pull\" or \"bundle\" when the\n# related commands are run locally.\n# Default: serve\nsources = serve\n\n[acl.deny.branches]\n\n# Everyone is denied to the frozen branch:\nfrozen-branch = *\n\n# A bad user is denied on all branches:\n* = bad-user\n\n[acl.allow.branches]\n\n# A few users are allowed on branch-a:\nbranch-a = user-1, user-2, user-3\n\n# Only one user is allowed on branch-b:\nbranch-b = user-1\n\n# The super user is allowed on any branch:\n* = super-user\n\n# Everyone is allowed on branch-for-tests:\nbranch-for-tests = *\n\n[acl.deny]\n# This list is checked first. If a match is found, acl.allow is not\n# checked. All users are granted access if acl.deny is not present.\n# Format for both lists: glob pattern = user, ..., @group, ...\n\n# To match everyone, use an asterisk for the user:\n# my/glob/pattern = *\n\n# user6 will not have write access to any file:\n= user6\n\n# Group \"hg-denied\" will not have write access to any file:\n= @hg-denied\n\n# Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n# everyone being able to change all other files. See below.\nsrc/main/resources/DONT-TOUCH-THIS.txt = *\n\n[acl.allow]\n# if acl.allow is not present, all users are allowed by default\n# empty acl.allow = no users allowed\n\n# User \"docwriter\" has write access to any file under the \"docs\"\n# folder:\ndocs/ = docwriter\n\n# User \"jack\" and group \"designers\" have write access to any file\n# under the \"images\" folder:\nimages/ = jack, @designers\n\n# Everyone (except for \"user6\" and \"@hg-denied\" - see acl.deny above)\n# will have write access to any file under the \"resources\" folder\n# (except for 1 file. See acl.deny):\nsrc/main/resources/ = *\n\n.hgtags = releaseengineer\n\n#### Examples using the ! prefix\n\nSuppose there's a branch that only a given user (or group) should be able to push to, and you\ndon't want to restrict access to any other branch that may be created.\n\nThe  \"!\"  prefix allows you to prevent anyone except a given user or group to push changesets\nin a given branch or path.\n\nIn the examples below, we will: 1) Deny access to branch \"ring\" to anyone but  user  \"gollum\"\n2) Deny access to branch \"lake\" to anyone but members of the group \"hobbit\" 3) Deny access to\na file to anyone but user \"gollum\"\n\n[acl.allow.branches]\n# Empty\n\n[acl.deny.branches]\n\n# 1) only 'gollum' can commit to branch 'ring';\n# 'gollum' and anyone else can still commit to any other branch.\nring = !gollum\n\n# 2) only members of the group 'hobbit' can commit to branch 'lake';\n# 'hobbit' members and anyone else can still commit to any other branch.\nlake = !@hobbit\n\n# You can also deny access based on file paths:\n\n[acl.allow]\n# Empty\n\n[acl.deny]\n# 3) only 'gollum' can change the file below;\n# 'gollum' and anyone else can still change any other file.\n/misty/mountains/cave/ring = !gollum\n\n#### amend\n\nprovide the amend command (EXPERIMENTAL)\n\nThis extension provides an amend command that is similar  to  commit  --amend  but  does  not\nprompt an editor.\n\n#### Commands\n\n#### Change creation\n\n#### amend\n\namend the working copy parent with all or specified outstanding changes:\n\nhg amend [OPTION]... [FILE]...\n\nSimilar  to  hg  commit --amend, but reuse the commit message without invoking editor, unless\n--edit was set.\n\nSee hg help commit for more details.\n\nOptions:\n\n#### -A, --addremove\n\nmark new/missing files as added/removed before committing\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -i, --interactive\n\nuse interactive mode\n\n#### --close-branch\n\nmark a branch as closed, hiding it from the branch list\n\n#### -s, --secret\n\nuse the secret phase for committing\n\n#### -n,\n\nstore a note on the amend\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -D, --currentdate\n\nrecord the current date as commit date\n\n#### -U, --currentuser\n\nrecord the current user as committer\n\n[+] marked option can be specified multiple times\n\n#### automv\n\ncheck for unrecorded moves at commit time (EXPERIMENTAL)\n\nThis extension checks at commit/amend time if any of the committed files comes  from  an  un‐\nrecorded mv.\n\nThe threshold at which a file is considered a move can be set with the automv.similarity con‐\nfig option. This option takes a percentage between 0 (disabled) and 100 (files must be  iden‐\ntical), the default is 95.\n\n#### beautifygraph\n\nbeautify log -G output by using Unicode characters (EXPERIMENTAL)\n\nA terminal with UTF-8 support and monospace narrow text are required.\n\n#### blackbox\n\nlog repository events to a blackbox for debugging\n\nLogs  event  information to .hg/blackbox.log to help debug and diagnose problems.  The events\nthat get logged can be configured via the blackbox.track and blackbox.ignore config keys.\n\nExamples:\n\n[blackbox]\ntrack = *\nignore = pythonhook\n# dirty is *EXPENSIVE* (slow);\n# each log entry indicates `+` if the repository is dirty, like :hg:`id`.\ndirty = True\n# record the source of log messages\nlogsource = True\n\n[blackbox]\ntrack = command, commandfinish, commandexception, exthook, pythonhook\n\n[blackbox]\ntrack = incoming\n\n[blackbox]\n# limit the size of a log file\nmaxsize = 1.5 MB\n# rotate up to N log files when the current one gets too big\nmaxfiles = 3\n\n[blackbox]\n# Include microseconds in log entries with %f (see Python function\n# datetime.datetime.strftime)\ndate-format = %Y-%m-%d @ %H:%M:%S.%f\n\n#### Commands\n\n#### Repository maintenance\n\n#### blackbox\n\nview the recent repository events:\n\nhg blackbox [OPTION]...\n\nview the recent repository events\n\nOptions:\n\n#### -l,\n\nthe number of events to show (default: 10)\n\n#### bookflow\n\nimplements bookmark-based branching (EXPERIMENTAL)\n\n• Disables creation of new branches (config: enablebranches=False).\n\n• Requires an active bookmark on commit (config: requirebookmark=True).\n\n• Doesn't move the active bookmark on update, only on commit.\n\n• Requires '--rev' for moving an existing bookmark.\n\n• Protects special bookmarks (config: protect=@).\n\nflow related commands\n\nhg book NAME\ncreate a new bookmark\n\nhg book NAME -r REV\nmove bookmark to revision (fast-forward)\n\nhg up|co NAME\nswitch to bookmark\n\nhg push -B .\npush active bookmark\n\n#### bugzilla\n\nhooks for integrating with the Bugzilla bug tracker\n\nThis hook extension adds comments on bugs in Bugzilla when changesets that refer to  bugs  by\nBugzilla ID are seen. The comment is formatted using the Mercurial template mechanism.\n\nThe  bug  references can optionally include an update for Bugzilla of the hours spent working\non the bug. Bugs can also be marked fixed.\n\nFour basic modes of access to Bugzilla are provided:\n\n1. Access via the Bugzilla REST-API. Requires bugzilla 5.0 or later.\n\n2. Access via the Bugzilla XMLRPC interface. Requires Bugzilla 3.4 or later.\n\n3. Check data via the Bugzilla XMLRPC interface and submit bug change via email  to  Bugzilla\nemail interface. Requires Bugzilla 3.4 or later.\n\n4. Writing  directly  to  the  Bugzilla database. Only Bugzilla installations using MySQL are\nsupported. Requires Python MySQLdb.\n\nWriting directly to the database is susceptible to schema changes, and relies on  a  Bugzilla\ncontrib  script to send out bug change notification emails. This script runs as the user run‐\nning Mercurial, must be run on the host with the Bugzilla install, and requires permission to\nread  Bugzilla  configuration  details and the necessary MySQL user and password to have full\naccess rights to the Bugzilla database. For these reasons this access mode is now  considered\ndeprecated, and will not be updated for new Bugzilla versions going forward. Only adding com‐\nments is supported in this access mode.\n\nAccess via XMLRPC needs a Bugzilla username and password to be specified  in  the  configura‐\ntion. Comments are added under that username. Since the configuration must be readable by all\nMercurial users, it is recommended that the rights of that user are restricted in Bugzilla to\nthe minimum necessary to add comments. Marking bugs fixed requires Bugzilla 4.0 and later.\n\nAccess  via XMLRPC/email uses XMLRPC to query Bugzilla, but sends email to the Bugzilla email\ninterface to submit comments to bugs.  The From: address in the email is set to the email ad‐\ndress  of  the Mercurial user, so the comment appears to come from the Mercurial user. In the\nevent that the Mercurial user email is not recognized by Bugzilla as  a  Bugzilla  user,  the\nemail  associated with the Bugzilla username used to log into Bugzilla is used instead as the\nsource of the comment. Marking bugs fixed works on all supported Bugzilla versions.\n\nAccess via the REST-API needs either a Bugzilla username and password or an apikey  specified\nin  the configuration. Comments are made under the given username or the user associated with\nthe apikey in Bugzilla.\n\nConfiguration items common to all access modes:\n\n#### bugzilla.version\n\nThe access type to use. Values recognized are:\n\nrestapi\n\nBugzilla REST-API, Bugzilla 5.0 and later.\n\nxmlrpc\n\nBugzilla XMLRPC interface.\n\nxmlrpc+email\n\nBugzilla XMLRPC and email interfaces.\n\n3.0\n\nMySQL access, Bugzilla 3.0 and later.\n\n2.18\n\nMySQL access, Bugzilla 2.18 and up to but not including 3.0.\n\n2.16\n\nMySQL access, Bugzilla 2.16 and up to but not including 2.18.\n\n#### bugzilla.regexp\n\nRegular expression to match bug IDs for update in changeset commit message.   It  must\ncontain one \"()\" named group <ids> containing the bug IDs separated by non-digit char‐\nacters. It may also contain a named group <hours> with a floating-point number  giving\nthe  hours  worked on the bug. If no named groups are present, the first \"()\" group is\nassumed to contain the bug IDs, and work time is not updated. The  default  expression\nmatches Bug 1234, Bug no. 1234, Bug number 1234, Bugs 1234,5678, Bug 1234 and 5678 and\nvariations thereof, followed by an hours number prefixed by h  or  hours,  e.g.  hours\n1.5. Matching is case insensitive.\n\n#### bugzilla.fixregexp\n\nRegular  expression  to  match  bug IDs for marking fixed in changeset commit message.\nThis must contain a \"()\" named group  <ids>`  containing  the  bug  IDs  separated  by\nnon-digit  characters.  It  may  also  contain  a  named group ``<hours> with a float‐\ning-point number giving the hours worked on the bug. If no named groups  are  present,\nthe  first \"()\" group is assumed to contain the bug IDs, and work time is not updated.\nThe default expression matches Fixes 1234, Fixes bug 1234, Fixes bugs 1234,5678, Fixes\n1234  and  5678  and  variations thereof, followed by an hours number prefixed by h or\nhours, e.g. hours 1.5. Matching is case insensitive.\n\n#### bugzilla.fixstatus\n\nThe status to set a bug to when marking fixed. Default RESOLVED.\n\n#### bugzilla.fixresolution\n\nThe resolution to set a bug to when marking fixed. Default FIXED.\n\n#### bugzilla.style\n\nThe style file to use when formatting comments.\n\n#### bugzilla.template\n\nTemplate to use when formatting comments. Overrides style if specified. In addition to\nthe usual Mercurial keywords, the extension specifies:\n\n{bug}\n\nThe Bugzilla bug ID.\n\n{root}\n\nThe full pathname of the Mercurial repository.\n\n{webroot}\n\nStripped pathname of the Mercurial repository.\n\n{hgweb}\n\nBase URL for browsing Mercurial repositories.\n\nDefault   changeset   {node|short}   in   repo   {root}   refers  to  bug  {bug}.\\nde‐‐\ntails:\\n\\t{desc|tabindent}\n\n#### bugzilla.strip\n\nThe number of path separator characters to strip  from  the  front  of  the  Mercurial\nrepository  path ({root} in templates) to produce {webroot}. For example, a repository\nwith {root} /var/local/my-project with a strip of 2 gives a  value  for  {webroot}  of\nmy-project. Default 0.\n\n#### web.baseurl\n\nBase URL for browsing Mercurial repositories. Referenced from templates as {hgweb}.\n\nConfiguration items common to XMLRPC+email and MySQL access modes:\n\n#### bugzilla.usermap\n\nPath  of file containing Mercurial committer email to Bugzilla user email mappings. If\nspecified, the file should contain one mapping per line:\n\ncommitter = Bugzilla user\n\nSee also the [usermap] section.\n\nThe [usermap] section is used to specify mappings of Mercurial committer  email  to  Bugzilla\nuser  email.  See  also  bugzilla.usermap.  Contains entries of the form committer = Bugzilla\nuser.\n\nXMLRPC and REST-API access mode configuration:\n\n#### bugzilla.bzurl\n\nThe base URL for the Bugzilla installation.  Default http://localhost/bugzilla.\n\n#### bugzilla.user\n\nThe username to use to log into Bugzilla via XMLRPC. Default bugs.\n\n#### bugzilla.password\n\nThe password for Bugzilla login.\n\nREST-API access mode uses the options listed above as well as:\n\n#### bugzilla.apikey\n\nAn apikey generated on the Bugzilla instance for api access.  Using an apikey  removes\nthe need to store the user and password options.\n\nXMLRPC+email access mode uses the XMLRPC access mode configuration items, and also:\n\n#### bugzilla.bzemail\n\nThe Bugzilla email address.\n\nIn  addition,  the  Mercurial  email  settings  must  be configured. See the documentation in\nhgrc(5), sections [email] and [smtp].\n\nMySQL access mode configuration:\n\n#### bugzilla.host\n\nHostname of the MySQL server holding the Bugzilla database.  Default localhost.\n\n#### bugzilla.db\n\nName of the Bugzilla database in MySQL. Default bugs.\n\n#### bugzilla.user\n\nUsername to use to access MySQL server. Default bugs.\n\n#### bugzilla.password\n\nPassword to use to access MySQL server.\n\n#### bugzilla.timeout\n\nDatabase connection timeout (seconds). Default 5.\n\n#### bugzilla.bzuser\n\nFallback Bugzilla user name to record comments with, if changeset committer cannot  be\nfound as a Bugzilla user.\n\n#### bugzilla.bzdir\n\nBugzilla install directory. Used by default notify. Default /var/www/html/bugzilla.\n\n#### bugzilla.notify\n\nThe command to run to get Bugzilla to send bug change notification emails. Substitutes\nfrom a map with 3 keys, bzdir, id (bug id) and user (committer  bugzilla  email).  De‐\nfault  depends  on  version; from 2.18 it is \"cd %(bzdir)s && perl -T contrib/sendbug‐\nmail.pl %(id)s %(user)s\".\n\nActivating the extension:\n\n[extensions]\nbugzilla =\n\n[hooks]\n# run bugzilla hook on every change pulled or pushed in here\nincoming.bugzilla = python:hgext.bugzilla.hook\n\nExample configurations:\n\nXMLRPC example configuration. This uses the Bugzilla at http://my-project.org/bugzilla,  log‐\nging  in  as user bugmail@my-project.org with password plugh. It is used with a collection of\nMercurial   repositories   in    /var/local/hg/repos/,    with    a    web    interface    at\nhttp://my-project.org/hg.\n\n[bugzilla]\nbzurl=http://my-project.org/bugzilla\nuser=bugmail@my-project.org\npassword=plugh\nversion=xmlrpc\ntemplate=Changeset {node|short} in {root|basename}.\n{hgweb}/{webroot}/rev/{node|short}\\n\n{desc}\\n\nstrip=5\n\n[web]\nbaseurl=http://my-project.org/hg\n\nXMLRPC+email example configuration. This uses the Bugzilla at http://my-project.org/bugzilla,\nlogging in as user bugmail@my-project.org with password plugh. It is used with  a  collection\nof    Mercurial   repositories   in   /var/local/hg/repos/,   with   a   web   interface   at\nhttp://my-project.org/hg.  Bug  comments   are   sent   to   the   Bugzilla   email   address\nbugzilla@my-project.org.\n\n[bugzilla]\nbzurl=http://my-project.org/bugzilla\nuser=bugmail@my-project.org\npassword=plugh\nversion=xmlrpc+email\nbzemail=bugzilla@my-project.org\ntemplate=Changeset {node|short} in {root|basename}.\n{hgweb}/{webroot}/rev/{node|short}\\n\n{desc}\\n\nstrip=5\n\n[web]\nbaseurl=http://my-project.org/hg\n\n[usermap]\nuser@emaildomain.com=user.name@bugzilladomain.com\n\nMySQL example configuration. This has a local Bugzilla 3.2 installation in /opt/bugzilla-3.2.\nThe MySQL database is on localhost, the Bugzilla database name is bugs and MySQL is  accessed\nwith  MySQL username bugs password XYZZY. It is used with a collection of Mercurial reposito‐\nries in /var/local/hg/repos/, with a web interface at http://my-project.org/hg.\n\n[bugzilla]\nhost=localhost\npassword=XYZZY\nversion=3.0\nbzuser=unknown@domain.com\nbzdir=/opt/bugzilla-3.2\ntemplate=Changeset {node|short} in {root|basename}.\n{hgweb}/{webroot}/rev/{node|short}\\n\n{desc}\\n\nstrip=5\n\n[web]\nbaseurl=http://my-project.org/hg\n\n[usermap]\nuser@emaildomain.com=user.name@bugzilladomain.com\n\nAll the above add a comment to the Bugzilla bug record of the form:\n\nChangeset 3b16791d6642 in repository-name.\nhttp://my-project.org/hg/repository-name/rev/3b16791d6642\n\nChangeset commit comment. Bug 1234.\n\n#### censor\n\nerase file content at a given revision\n\nThe censor command instructs Mercurial to erase all content of a file  at  a  given  revision\nwithout  updating the changeset hash. This allows existing history to remain valid while pre‐\nventing future clones/pulls from receiving the erased data.\n\nTypical uses for censor are due to security or legal requirements, including:\n\n* Passwords, private keys, cryptographic material\n* Licensed data/code/libraries for which the license has expired\n* Personally Identifiable Information or other private data\n\nCensored nodes can interrupt mercurial's typical operation whenever the excised data needs to\nbe materialized. Some commands, like hg cat/hg revert, simply fail when asked to produce cen‐\nsored data. Others, like hg verify and hg update, must be capable of tolerating censored data\nto  continue to function in a meaningful way. Such commands only tolerate censored file revi‐\nsions if they are allowed by the \"censor.policy=ignore\" config option.\n\nA few informative commands such as hg grep will  unconditionally  ignore  censored  data  and\nmerely report that it was encountered.\n\n#### Commands\n\n#### Repository maintenance\n\n#### censor\n\nhg censor -r REV [-t TEXT] [FILE]\n\nOptions:\n\n#### -r,\n\ncensor file from specified revision\n\n#### -t,\n\nreplacement tombstone data\n\n#### children\n\ncommand to display child changesets (DEPRECATED)\n\nThis extension is deprecated. You should use hg log -r \"children(REV)\" instead.\n\n#### Commands\n\n#### Change navigation\n\n#### children\n\nshow the children of the given or working directory revision:\n\nhg children [-r REV] [FILE]\n\nPrint the children of the working directory's revisions. If a revision is given via -r/--rev,\nthe children of that revision will be printed. If a file argument is given, revision in which\nthe  file  was last changed (after the working directory revision or the argument to --rev if\ngiven) is printed.\n\nPlease use hg log instead:\n\nhg children => hg log -r \"children(.)\"\nhg children -r REV => hg log -r \"children(REV)\"\n\nSee hg help log and hg help revsets.children.\n\nOptions:\n\n#### -r,\n\nshow children of the specified revision (default: .)\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### churn\n\ncommand to display statistics about repository history\n\n#### Commands\n\n#### Repository maintenance\n\n#### churn\n\nhistogram of changes to the repository:\n\nhg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]\n\nThis command will display a histogram representing the number of changed lines or  revisions,\ngrouped  according  to the given template. The default template will group changes by author.\nThe --dateformat option may be used to group the results by date instead.\n\nStatistics are based on the number of changed lines, or alternatively the number of  matching\nrevisions if the --changesets option is specified.\n\nExamples:\n\n# display count of changed lines for every committer\nhg churn -T \"{author|email}\"\n\n# display daily activity graph\nhg churn -f \"%H\" -s -c\n\n# display activity of developers by month\nhg churn -f \"%Y-%m\" -s -c\n\n# display count of lines changed in every year\nhg churn -f \"%Y\" -s\n\n# display count of lines changed in a time range\nhg churn -d \"2020-04 to 2020-09\"\n\nIt  is  possible to map alternate email addresses to a main address by providing a file using\nthe following format:\n\n<alias email> = <actual email>\n\nSuch a file may be specified with the --aliases option, otherwise a  .hgchurn  file  will  be\nlooked for in the working directory root.  Aliases will be split from the rightmost \"=\".\n\nOptions:\n\n#### -r,\n\ncount rate for the specified revision or revset\n\n#### -d,\n\ncount rate for revisions matching date spec\n\n#### -t,\n\ntemplate to group changesets (DEPRECATED)\n\n#### -T,\n\ntemplate to group changesets (default: {author|email})\n\n#### -f,\n\nstrftime-compatible format for grouping by date\n\n#### -c, --changesets\n\ncount rate by number of changesets\n\n#### -s, --sort\n\nsort by key (default: sort by count)\n\n#### --diffstat\n\ndisplay added/removed lines separately\n\n--aliases <FILE>\nfile with email aliases\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### clonebundles\n\nadvertise pre-generated bundles to seed clones\n\n\"clonebundles\"  is  a server-side extension used to advertise the existence of pre-generated,\nexternally hosted bundle files to clients that are cloning so that  cloning  can  be  faster,\nmore  reliable,  and require less resources on the server. \"pullbundles\" is a related feature\nfor sending pre-generated bundle files to clients as part of pull operations.\n\nCloning can be a CPU and I/O intensive operation on servers. Traditionally,  the  server,  in\nresponse to a client's request to clone, dynamically generates a bundle containing the entire\nrepository content and sends it to the client.  There is no caching on  the  server  and  the\nserver  will  have to redundantly generate the same outgoing bundle in response to each clone\nrequest. For servers with large repositories or with high clone volume, the load from  clones\ncan make scaling the server challenging and costly.\n\nThis  extension  provides server operators the ability to offload potentially expensive clone\nload to an external service. Pre-generated bundles also allow using more CPU  intensive  com‐\npression, reducing the effective bandwidth requirements.\n\nHere's how clone bundles work:\n\n1. A  server  operator establishes a mechanism for making bundle files available on a hosting\nservice where Mercurial clients can fetch them.\n\n2. A manifest file listing available bundle URLs and some optional metadata is added  to  the\nMercurial repository on the server.\n\n3. A client initiates a clone against a clone bundles aware server.\n\n4. The  client  sees the server is advertising clone bundles and fetches the manifest listing\navailable bundles.\n\n5. The client filters and sorts the available bundles based on what it supports and prefers.\n\n6. The client downloads and applies an available bundle from the server-specified URL.\n\n7. The client reconnects to the original server and performs the equivalent of hg pull to re‐\ntrieve  all repository data not in the bundle. (The repository could have been updated be‐\ntween when the bundle was created and when the client started the  clone.)  This  may  use\n\"pullbundles\".\n\nInstead  of  the server generating full repository bundles for every clone request, it gener‐\nates full bundles once and they are subsequently reused to bootstrap new clones.  The  server\nmay  still  transfer  data  at  clone  time.   However,  this  is  only  data  that  has been\nadded/changed since the bundle was created. For large, established repositories, this can re‐\nduce server load for clones to less than 1% of original.\n\nHere's how pullbundles work:\n\n1. A  manifest  file  listing  available bundles and describing the revisions is added to the\nMercurial repository on the server.\n\n2. A new-enough client informs the server that it supports  partial  pulls  and  initiates  a\npull.\n\n3. If  the  server has pull bundles enabled and sees the client advertising partial pulls, it\nchecks for a matching pull bundle in the manifest.  A bundle matches if the format is sup‐\nported  by  the  client, the client has the required revisions already and needs something\nfrom the bundle.\n\n4. If there is at least one matching bundle, the server sends it to the client.\n\n5. The client applies the bundle and notices that the server reply was incomplete. It  initi‐\nates another pull.\n\nTo work, this extension requires the following of server operators:\n\n• Generating  bundle  files  of  repository content (typically periodically, such as once per\nday).\n\n• Clone bundles: A file server that clients have network access to and that Python knows  how\nto talk to through its normal URL handling facility (typically an HTTP/HTTPS server).\n\n• A process for keeping the bundles manifest in sync with available bundle files.\n\nStrictly speaking, using a static file hosting server isn't required: a server operator could\nuse a dynamic service for retrieving bundle data. However, static file hosting  services  are\nsimple and scalable and should be sufficient for most needs.\n\nBundle  files  can be generated with the hg bundle command. Typically hg bundle --all is used\nto produce a bundle of the entire repository.\n\nhg debugcreatestreamclonebundle can be used to produce a special streaming clonebundle. These\nare  bundle  files that are extremely efficient to produce and consume (read: fast). However,\nthey are larger than traditional bundle formats and require that clients  support  the  exact\nset  of repository data store formats in use by the repository that created them.  Typically,\na newer server can serve data that is compatible  with  older  clients.   However,  streaming\nclone  bundles  don't  have this guarantee. Server operators need to be aware that newer ver‐‐\nsions of Mercurial may produce streaming clone bundles incompatible with older Mercurial ver‐‐\n\n#### sions.\n\nA server operator is responsible for creating a .hg/clonebundles.manifest file containing the\nlist of available bundle files suitable for seeding clones. If this file does not exist,  the\nrepository  will  not advertise the existence of clone bundles when clients connect. For pull\nbundles, .hg/pullbundles.manifest is used.\n\nThe manifest file contains a newline (n) delimited list of entries.\n\nEach line in this file defines an available bundle. Lines have the format:\n\n<URL> [<key>=<value>[ <key>=<value>]]\n\nThat is, a URL followed by an optional, space-delimited list of  key=value  pairs  describing\nadditional properties of this bundle. Both keys and values are URI encoded.\n\nFor pull bundles, the URL is a path under the .hg directory of the repository.\n\nKeys in UPPERCASE are reserved for use by Mercurial and are defined below.  All non-uppercase\nkeys can be used by site installations. An example use for custom properties is  to  use  the\ndatacenter attribute to define which data center a file is hosted in. Clients could then pre‐\nfer a server in the data center closest to them.\n\nThe following reserved keys are currently defined:\n\nBUNDLESPEC\nA \"bundle specification\" string that describes the type of the bundle.\n\nThese are string values that are accepted by the \"--type\" argument of hg bundle.\n\nThe values are parsed in strict mode, which means  they  must  be  of  the  \"<compres‐\nsion>-<type>\" form. See mercurial.exchange.parsebundlespec() for more details.\n\nhg  debugbundle --spec can be used to print the bundle specification string for a bun‐\ndle file. The output of this command can be used verbatim for the value of  BUNDLESPEC\n(it is already escaped).\n\nClients  will  automatically filter out specifications that are unknown or unsupported\nso they won't attempt to download something that likely won't apply.\n\nThe actual value doesn't impact client behavior beyond filtering: clients  will  still\nsniff the bundle type from the header of downloaded files.\n\nUse of this key is highly recommended, as it allows clients to easily skip unsupported\nbundles. If this key is not defined, an old client may attempt to apply a bundle  that\nit is incapable of reading.\n\nREQUIRESNI\nWhether  Server  Name  Indication (SNI) is required to connect to the URL.  SNI allows\nservers to use multiple certificates on the same IP. It is somewhat common in CDNs and\nother  hosting  providers. Older Python versions do not support SNI. Defining this at‐\ntribute enables clients with older Python versions to filter this entry without  expe‐\nriencing an opaque SSL failure at connection time.\n\nIf  this  is  defined,  it is important to advertise a non-SNI fallback URL or clients\nrunning old Python releases may not be able to clone with the clonebundles facility.\n\nValue should be \"true\".\n\nREQUIREDRAM\nValue specifies expected memory requirements to decode the payload.  Values  can  have\nsuffixes for common bytes sizes. e.g. \"64MB\".\n\nThis  key  is often used with zstd-compressed bundles using a high compression level /\nwindow size, which can require 100+ MB of memory to decode.\n\nheads  Used for pull bundles. This contains the ; separated changeset hashes of the heads  of\nthe bundle content.\n\nbases  Used  for pull bundles. This contains the ; separated changeset hashes of the roots of\nthe bundle content. This can be skipped if the bundle was created without --base.\n\nManifests can contain multiple entries. Assuming metadata is defined, clients will filter en‐\ntries  from the manifest that they don't support. The remaining entries are optionally sorted\nby client preferences (ui.clonebundleprefers config option).  The  client  then  attempts  to\nfetch the bundle at the first URL in the remaining list.\n\nErrors  when  downloading a bundle will fail the entire clone operation: clients do not auto‐‐\nmatically fall back to a traditional clone. The reason for this is that if a server is  using\nclone  bundles, it is probably doing so because the feature is necessary to help it scale. In\nother words, there is an assumption that clone load will be offloaded to another service  and\nthat  the Mercurial server isn't responsible for serving this clone load.  If that other ser‐\nvice experiences issues and clients start mass falling back to the original Mercurial server,\nthe  added  clone load could overwhelm the server due to unexpected load and effectively take\nit offline. Not having clients automatically fall back to cloning from  the  original  server\nmitigates this scenario.\n\nBecause there is no automatic Mercurial server fallback on failure of the bundle hosting ser‐\nvice, it is important for server operators to view the bundle hosting service as an extension\nof  the Mercurial server in terms of availability and service level agreements: if the bundle\nhosting service goes down, so does the ability for clients to clone. Note: clients will see a\nmessage  informing  them  how  to bypass the clone bundles facility when a failure occurs. So\nserver operators should prepare for some people to follow these instructions when  a  failure\noccurs,  thus driving more load to the original Mercurial server when the bundle hosting ser‐\nvice fails.\n\n#### closehead\n\nclose arbitrary heads without checking them out first\n\n#### Commands\n\n#### Change manipulation\n\n#### close-head\n\nclose the given head revisions:\n\nhg close-head [OPTION]... [REV]...\n\nThis is equivalent to checking out each revision in  a  clean  tree  and  running  hg  commit\n--close-branch, except that it doesn't change the working directory.\n\nThe commit message must be specified with -l or -m.\n\nOptions:\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -r,\n\nrevision to check\n\n[+] marked option can be specified multiple times\n\naliases: close-heads\n\n#### commitextras\n\nadds a new flag extras to commit (ADVANCED)\n\n#### convert\n\nimport revisions from foreign VCS repositories into Mercurial\n\n#### Commands\n\n#### Uncategorized commands\n\n#### convert\n\nconvert a foreign SCM repository to a Mercurial one.:\n\nhg convert [OPTION]... SOURCE [DEST [REVMAP]]\n\nAccepted source formats [identifiers]:\n\n• Mercurial [hg]\n\n• CVS [cvs]\n\n• Darcs [darcs]\n\n• git [git]\n\n• Subversion [svn]\n\n• Monotone [mtn]\n\n• GNU Arch [gnuarch]\n\n• Bazaar [bzr]\n\n• Perforce [p4]\n\nAccepted destination formats [identifiers]:\n\n• Mercurial [hg]\n\n• Subversion [svn] (history on branches is not preserved)\n\nIf  no  revision is given, all revisions will be converted.  Otherwise, convert will only im‐\nport up to the named revision (given in a format understood by the source).\n\nIf no destination directory name is specified, it defaults to the basename of the source with\n\n#### -hg\n\nBy  default, all sources except Mercurial will use --branchsort.  Mercurial uses --sourcesort\nto preserve original revision numbers order. Sort modes have the following effects:\n\n#### --branchsort\n\nconvert from parent to child revision when possible, which means branches are  usually\nconverted one after the other. It generates more compact repositories.\n\n#### --datesort\n\nsort  revisions  by  date. Converted repositories have good-looking changelogs but are\noften an order of magnitude larger than the same ones generated by --branchsort.\n\n#### --sourcesort\n\ntry to preserve source revisions order, only supported by Mercurial sources.\n\n#### --closesort\n\ntry to move closed revisions as close as possible to parent branches,  only  supported\nby Mercurial sources.\n\nIf  REVMAP  isn't given, it will be put in a default location (<dest>/.hg/shamap by default).\nThe REVMAP is a simple text file that maps each source commit ID to the  destination  ID  for\nthat revision, like so:\n\n<source ID> <destination ID>\n\nIf the file doesn't exist, it's automatically created. It's updated on each commit copied, so\nhg convert can be interrupted and can be run repeatedly to copy new commits.\n\nThe authormap is a simple text file that maps each source commit author to a destination com‐\nmit author. It is handy for source SCMs that use unix logins to identify authors (e.g.: CVS).\nOne line per author mapping and the line format is:\n\nsource author = destination author\n\nEmpty lines and lines starting with a # are ignored.\n\nThe filemap is a file that allows filtering and remapping of files and directories. Each line\ncan contain one of the following directives:\n\ninclude path/to/file-or-dir\n\nexclude path/to/file-or-dir\n\nrename path/to/source path/to/destination\n\nComment lines start with #. A specified path matches if it equals the full relative name of a\nfile or one of its parent directories. The include or  exclude  directive  with  the  longest\nmatching path applies, so line order does not matter.\n\nThe  include  directive  causes a file, or all files under a directory, to be included in the\ndestination repository. The default if there are no include statements is to  include  every‐\nthing.  If there are any include statements, nothing else is included.  The exclude directive\ncauses files or directories to be omitted. The rename directive renames a file  or  directory\nif  it  is converted. To rename from a subdirectory into the root of the repository, use . as\nthe path to rename to.\n\n--full will make sure the converted changesets contain exactly the right files with the right\ncontent.  It  will  make a full conversion of all files, not just the ones that have changed.\nFiles that already are correct will not be changed. This can be used to apply filemap changes\nwhen converting incrementally. This is currently only supported for Mercurial and Subversion.\n\nThe  splicemap  is a file that allows insertion of synthetic history, letting you specify the\nparents of a revision. This is useful if you want to e.g. give a Subversion  merge  two  par‐\nents,  or  graft two disconnected series of history together. Each entry contains a key, fol‐\nlowed by a space, followed by one or two comma-separated values:\n\nkey parent1, parent2\n\nThe key is the revision ID in the source revision control system whose parents should be mod‐\nified  (same  format  as a key in .hg/shamap). The values are the revision IDs (in either the\nsource or destination revision control system) that should be used as  the  new  parents  for\nthat  node. For example, if you have merged \"release-1.0\" into \"trunk\", then you should spec‐\nify the revision on \"trunk\" as the first parent and the one on the  \"release-1.0\"  branch  as\nthe second.\n\nThe  branchmap  is a file that allows you to rename a branch when it is being brought in from\nwhatever external repository. When used in conjunction with a splicemap, it allows for a pow‐\nerful  combination to help fix even the most badly mismanaged repositories and turn them into\nnicely structured Mercurial repositories. The branchmap contains lines of the form:\n\noriginalbranchname newbranchname\n\nwhere \"originalbranchname\" is the  name  of  the  branch  in  the  source  repository,  and\n\"newbranchname\"  is  the name of the branch is the destination repository. No whitespace is\nallowed in the new branch name. This can be used to (for instance) move code in  one  reposi‐\ntory from \"default\" to a named branch.\n\n#### Mercurial Source\n\nThe Mercurial source recognizes the following configuration options, which you can set on the\ncommand line with --config:\n\n#### convert.hg.ignoreerrors\n\nignore integrity errors when reading.  Use it to fix Mercurial repositories with miss‐\ning revlogs, by converting from and to Mercurial. Default is False.\n\n#### convert.hg.saverev\n\nstore  original  revision  ID  in  changeset (forces target IDs to change). It takes a\nboolean argument and defaults to False.\n\n#### convert.hg.startrev\n\nspecify the initial Mercurial revision.  The default is 0.\n\n#### convert.hg.revs\n\nrevset specifying the source revisions to convert.\n\n#### Bazaar Source\n\nThe following options can be used with --config:\n\n#### convert.bzr.saverev\n\nwhether to store the original Bazaar commit ID in the metadata of the destination com‐\nmit. The default is True.\n\n#### CVS Source\n\nCVS  source  will  use  a sandbox (i.e. a checked-out copy) from CVS to indicate the starting\npoint of what will be converted. Direct access to the repository files is not needed,  unless\nof course the repository is :local:. The conversion uses the top level directory in the sand‐\nbox to find the CVS repository, and then uses CVS rlog commands to  find  files  to  convert.\nThis  means  that  unless  a filemap is given, all files under the starting directory will be\nconverted, and that any directory reorganization in the CVS sandbox is ignored.\n\nThe following options can be used with --config:\n\n#### convert.cvsps.cache\n\nSet to False to disable remote log caching, for testing and  debugging  purposes.  De‐\nfault is True.\n\n#### convert.cvsps.fuzz\n\nSpecify  the  maximum time (in seconds) that is allowed between commits with identical\nuser and log message in a single changeset. When very large files were checked  in  as\npart of a changeset then the default may not be long enough.  The default is 60.\n\n#### convert.cvsps.logencoding\n\nSpecify  encoding  name to be used for transcoding CVS log messages. Multiple encoding\nnames can be specified as a list (see hg help config.Syntax), but only the  first  ac‐\nceptable  encoding  in  the list is used per CVS log entries. This transcoding is exe‐\ncuted before cvslog hook below.\n\n#### convert.cvsps.mergeto\n\nSpecify a regular expression to which commit log messages are matched. If a match  oc‐\ncurs,  then  the conversion process will insert a dummy revision merging the branch on\nwhich this log message occurs to  the  branch  indicated  in  the  regex.  Default  is\n{{mergetobranch ([-\\w]+)}}\n\n#### convert.cvsps.mergefrom\n\nSpecify  a regular expression to which commit log messages are matched. If a match oc‐\ncurs, then the conversion process will add the most recent revision on the branch  in‐\ndicated  in  the  regex as the second parent of the changeset. Default is {{mergefrom‐‐\nbranch ([-\\w]+)}}\n\n#### convert.localtimezone\n\nuse  local  time  (as  determined  by  the  TZ  environment  variable)  for  changeset\ndate/times. The default is False (use UTC).\n\n#### hooks.cvslog\n\nSpecify  a Python function to be called at the end of gathering the CVS log. The func‐\ntion is passed a list with the log entries, and can modify the  entries  in-place,  or\nadd or delete them.\n\n#### hooks.cvschangesets\n\nSpecify  a  Python  function to be called after the changesets are calculated from the\nCVS log. The function is passed a list with the changeset entries, and can modify  the\nchangesets in-place, or add or delete them.\n\nAn  additional \"debugcvsps\" Mercurial command allows the builtin changeset merging code to be\nrun without doing a conversion. Its parameters and output are similar to that of  cvsps  2.1.\nPlease see the command help for more details.\n\n#### Subversion Source\n\nSubversion  source  detects  classical trunk/branches/tags layouts.  By default, the supplied\nsvn://repo/path/ source URL is converted as a single branch. If svn://repo/path/trunk  exists\nit  replaces  the  default branch. If svn://repo/path/branches exists, its subdirectories are\nlisted as possible branches. If svn://repo/path/tags exists, it is looked for tags  referenc‐\ning  converted  branches. Default trunk, branches and tags values can be overridden with fol‐\nlowing options. Set them to paths relative to the source URL, or leave them blank to  disable\nauto detection.\n\nThe following options can be set with --config:\n\n#### convert.svn.branches\n\nspecify the directory containing branches.  The default is branches.\n\n#### convert.svn.tags\n\nspecify the directory containing tags. The default is tags.\n\n#### convert.svn.trunk\n\nspecify the name of the trunk branch. The default is trunk.\n\n#### convert.localtimezone\n\nuse  local  time  (as  determined  by  the  TZ  environment  variable)  for  changeset\ndate/times. The default is False (use UTC).\n\nSource history can be retrieved starting at a specific revision, instead of being  integrally\nconverted. Only single branch conversions are supported.\n\n#### convert.svn.startrev\n\nspecify start Subversion revision number.  The default is 0.\n\n#### Git Source\n\nThe  Git  importer  converts commits from all reachable branches (refs in refs/heads) and re‐\nmotes (refs in refs/remotes) to Mercurial.  Branches are converted to bookmarks with the same\nname, with the leading 'refs/heads' stripped. Git submodules are converted to Git subrepos in\nMercurial.\n\nThe following options can be set with --config:\n\n#### convert.git.similarity\n\nspecify how similar files modified in a commit must be to be imported  as  renames  or\ncopies,  as  a  percentage between 0 (disabled) and 100 (files must be identical). For\nexample, 90 means that a delete/add pair will be imported as a rename if more than 90%\nof the file hasn't changed. The default is 50.\n\n#### convert.git.findcopiesharder\n\nwhile  detecting copies, look at all files in the working copy instead of just changed\nones. This is very expensive for large projects,  and  is  only  effective  when  con‐‐\nvert.git.similarity is greater than 0. The default is False.\n\n#### convert.git.renamelimit\n\nperform  rename and copy detection up to this many changed files in a commit. Increas‐\ning this will make rename and copy detection more accurate but will significantly slow\ndown  computation  on large projects. The option is only relevant if convert.git.simi‐‐\nlarity is greater than 0. The default is 400.\n\n#### convert.git.committeractions\n\nlist of actions to take when processing author and committer values.\n\nGit commits have separate author (who wrote the commit) and committer (who applied the\ncommit) fields. Not all destinations support separate author and committer fields (in‐\ncluding Mercurial). This config option controls what to do with these author and  com‐\nmitter fields during conversion.\n\nA  value  of messagedifferent will append a committer: ...  line to the commit message\nif the Git committer is different from the author. The prefix  of  that  line  can  be\nspecified  using  the syntax messagedifferent=<prefix>. e.g. messagedifferent=git-com‐‐\nmitter:.  When a prefix is specified, a space will always be inserted between the pre‐\nfix and the value.\n\nmessagealways  behaves like messagedifferent except it will always result in a commit‐‐\nter: ... line being appended to the commit message. This value is  mutually  exclusive\nwith messagedifferent.\n\ndropcommitter  will  remove references to the committer. Only references to the author\nwill remain. Actions that add references to the committer will  have  no  effect  when\nthis is set.\n\nreplaceauthor will replace the value of the author field with the committer. Other ac‐\ntions that add references to the committer will still take effect when this is set.\n\nThe default is messagedifferent.\n\n#### convert.git.extrakeys\n\nlist of extra keys from commit metadata to copy to the destination. Some Git reposito‐\nries  store  extra metadata in commits.  By default, this non-default metadata will be\nlost during conversion.  Setting this config option can  retain  that  metadata.  Some\nbuilt-in keys such as parent and branch are not allowed to be copied.\n\n#### convert.git.remoteprefix\n\nremote  refs are converted as bookmarks with convert.git.remoteprefix as a prefix fol‐\nlowed by a /. The default is 'remote'.\n\n#### convert.git.saverev\n\nwhether to store the original Git commit ID in the metadata of the destination commit.\nThe default is True.\n\n#### convert.git.skipsubmodules\n\ndoes  not  convert root level .gitmodules files or files with 160000 mode indicating a\nsubmodule. Default is False.\n\n#### Perforce Source\n\nThe Perforce (P4) importer can be given a p4 depot path or a client specification as  source.\nIt  will  convert  all  files  in the source to a flat Mercurial repository, ignoring labels,\nbranches and integrations. Note that when a depot path is given you then usually should spec‐\nify a target directory, because otherwise the target may be named ...-hg.\n\nThe following options can be set with --config:\n\n#### convert.p4.encoding\n\nspecify the encoding to use when decoding standard output of the Perforce command line\ntool. The default is default system encoding.\n\n#### convert.p4.startrev\n\nspecify initial Perforce revision (a Perforce changelist number).\n\n#### Mercurial Destination\n\nThe Mercurial destination will recognize Mercurial subrepositories in the destination  direc‐\ntory,  and  update the .hgsubstate file automatically if the destination subrepositories con‐\ntain the <dest>/<sub>/.hg/shamap file.  Converting a repository with subrepositories requires\nconverting a single repository at a time, from the bottom up.\n\nAn example showing how to convert a repository with subrepositories:\n\n# so convert knows the type when it sees a non empty destination\n$ hg init converted\n\n$ hg convert orig/sub1 converted/sub1\n$ hg convert orig/sub2 converted/sub2\n$ hg convert orig converted\n\nThe following options are supported:\n\n#### convert.hg.clonebranches\n\ndispatch source branches in separate clones. The default is False.\n\n#### convert.hg.tagsbranch\n\nbranch name for tag revisions, defaults to default.\n\n#### convert.hg.usebranchnames\n\npreserve branch names. The default is True.\n\n#### convert.hg.sourcename\n\nrecords  the given string as a 'convertsource' extra value on each commit made in the\ntarget repository. The default is None.\n\n#### convert.hg.preserve-hash\n\nonly works with mercurial sources. Make convert prevent performance improvement to the\nlist  of  modified files in commits when such an improvement would cause the hash of a\ncommit to change.  The default is False.\n\n#### All Destinations\n\nAll destination types accept the following options:\n\n#### convert.skiptags\n\ndoes not convert tags from the source repo to the target repo. The default is False.\n\n#### Subversion Destination\n\nOriginal commit dates are not preserved by default.\n\n#### convert.svn.dangerous-set-commit-dates\n\npreserve original commit dates, forcefully setting svn:date revision properties.  This\noption  is  DANGEROUS  and  may  break some subversion functionality for the resulting\nrepository (e.g. filtering revisions with date ranges in svn log), as original  commit\ndates are not guaranteed to be monotonically increasing.\n\nFor  commit  dates  setting  to work destination repository must have pre-revprop-change hook\nconfigured to allow setting of svn:date revision properties. See Subversion documentation for\nmore details.\n\nOptions:\n\n--authors <FILE>\nusername mapping filename (DEPRECATED) (use --authormap instead)\n\n#### -s,\n\nsource repository type\n\n#### -d,\n\ndestination repository type\n\n#### -r,\n\nimport up to source revision REV\n\n#### -A,\n\nremap usernames using this file\n\n--filemap <FILE>\nremap file names using contents of file\n\n--full apply filemap changes by converting all files again\n\n--splicemap <FILE>\nsplice synthesized history into place\n\n--branchmap <FILE>\nchange branch names while converting\n\n#### --branchsort\n\ntry to sort changesets by branches\n\n#### --datesort\n\ntry to sort changesets by date\n\n#### --sourcesort\n\npreserve source changesets order\n\n#### --closesort\n\ntry to reorder closed revisions\n\n[+] marked option can be specified multiple times\n\n#### eol\n\nautomatically manage newlines in repository files\n\nThis  extension  allows  you to manage the type of line endings (CRLF or LF) that are used in\nthe repository and in the local working directory. That way you can get CRLF line endings  on\nWindows and LF on Unix/Mac, thereby letting everybody use their OS native line endings.\n\nThe extension reads its configuration from a versioned .hgeol configuration file found in the\nroot of the working directory. The .hgeol file use the same syntax  as  all  other  Mercurial\nconfiguration files. It uses two sections, [patterns] and [repository].\n\nThe [patterns] section specifies how line endings should be converted between the working di‐\nrectory and the repository. The format is specified by a file pattern.  The  first  match  is\nused, so put more specific patterns first. The available line endings are LF, CRLF, and BIN.\n\nFiles with the declared format of CRLF or LF are always checked out and stored in the reposi‐\ntory in that format and files declared to be binary (BIN) are left  unchanged.  Additionally,\nnative  is  an  alias for checking out in the platform's default line ending: LF on Unix (in‐\ncluding Mac OS X) and CRLF on Windows. Note that BIN (do nothing to line endings)  is  Mercu‐\nrial's default behavior; it is only needed if you need to override a later, more general pat‐\ntern.\n\nThe optional [repository] section specifies the line endings to use for files stored  in  the\nrepository.  It  has  a single setting, native, which determines the storage line endings for\nfiles declared as native in the [patterns] section. It can be set to LF or CRLF. The  default\nis  LF. For example, this means that on Windows, files configured as native (CRLF by default)\nwill be converted to LF when stored in the repository. Files declared as LF, CRLF, or BIN  in\nthe [patterns] section are always stored as-is in the repository.\n\nExample versioned .hgeol file:\n\n[patterns]\n.py = native\n.vcproj = CRLF\n.txt = native\nMakefile = LF\n.jpg = BIN\n\n[repository]\nnative = LF\n\nNote   The  rules  will  first apply when files are touched in the working directory, e.g. by\nupdating to null and back to tip to touch all files.\n\nThe extension uses an optional [eol] section read from both the normal  Mercurial  configura‐\ntion  files and the .hgeol file, with the latter overriding the former. You can use that sec‐\ntion to control the overall behavior. There are three settings:\n\n• eol.native (default os.linesep) can be set to LF or CRLF to override the default  interpre‐\ntation  of  native for checkout. This can be used with hg archive on Unix, say, to generate\nan archive where files have line endings for Windows.\n\n• eol.only-consistent (default True) can be set to False to make the extension convert  files\nwith  inconsistent  EOLs.  Inconsistent means that there is both CRLF and LF present in the\nfile.  Such files are normally not touched under the assumption that they have  mixed  EOLs\non purpose.\n\n• eol.fix-trailing-newline  (default False) can be set to True to ensure that converted files\nend with a EOL character (either \\n or \\r\\n as per the configured patterns).\n\nThe extension provides cleverencode: and cleverdecode: filters like the deprecated  win32text\nextension  does.  This  means  that you can disable win32text and enable eol and your filters\nwill still work. You only need to these filters until you have prepared a .hgeol file.\n\nThe win32text.forbid* hooks provided by the win32text extension have been unified into a sin‐\ngle  hook  named  eol.checkheadshook. The hook will lookup the expected line endings from the\n.hgeol file, which means you must migrate to a .hgeol  file  first  before  using  the  hook.\neol.checkheadshook  only checks heads, intermediate invalid revisions will be pushed. To for‐\nbid them completely, use the eol.checkallhook hook. These hooks  are  best  used  as  pretxn‐‐\nchangegroup hooks.\n\nSee hg help patterns for more information about the glob patterns used.\n\n#### extdiff\n\ncommand to allow external programs to compare revisions\n\nThe  extdiff Mercurial extension allows you to use external programs to compare revisions, or\nrevision with working directory. The external diff programs are called  with  a  configurable\nset  of  options  and  two non-option arguments: paths to directories containing snapshots of\nfiles to compare.\n\nIf there is more than one file being compared and the \"child\" revision is the working  direc‐\ntory,  any modifications made in the external diff program will be copied back to the working\ndirectory from the temporary directory.\n\nThe extdiff extension also allows you to configure new diff commands, so you do not  need  to\ntype hg extdiff -p kdiff3 always.\n\n[extdiff]\n# add new command that runs GNU diff(1) in 'context diff' mode\ncdiff = gdiff -Nprc5\n## or the old way:\n#cmd.cdiff = gdiff\n#opts.cdiff = -Nprc5\n\n# add new command called meld, runs meld (no need to name twice).  If\n# the meld executable is not available, the meld tool in [merge-tools]\n# will be used, if available\nmeld =\n\n# add new command called vimdiff, runs gvimdiff with DirDiff plugin\n# (see http://www.vim.org/scripts/script.php?scriptid=102) Non\n# English user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" in\n# your .vimrc\nvimdiff = gvim -f \"+next\" \\\n\"+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))\"\n\nTool arguments can include variables that are expanded at runtime:\n\n$parent1, $plabel1 - filename, descriptive label of first parent\n$child,   $clabel  - filename, descriptive label of child revision\n$parent2, $plabel2 - filename, descriptive label of second parent\n$root              - repository root\n$parent is an alias for $parent1.\n\nThe extdiff extension will look in your [diff-tools] and [merge-tools] sections for diff tool\narguments, when none are specified in [extdiff].\n\n[extdiff]\nkdiff3 =\n\n[diff-tools]\nkdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child\n\nIf a program has a graphical interface, it might be interesting to tell Mercurial  about  it.\nIt  will  prevent the program from being mistakenly used in a terminal-only environment (such\nas an SSH terminal session), and will make hg extdiff --per-file open multiple file diffs  at\nonce  instead of one by one (if you still want to open file diffs one by one, you can use the\n--confirm option).\n\nDeclaring that a tool has a graphical interface can be done with the gui flag next  to  where\ndiffargs are specified:\n\n[diff-tools]\nkdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child\nkdiff3.gui = true\n\nYou  can use -I/-X and list of file or directory names like normal hg diff command. The extd‐\niff extension makes snapshots of only needed files, so running the external diff program will\nactually be pretty fast (at least faster than having to compare the entire tree).\n\n#### Commands\n\n#### File content management\n\n#### extdiff\n\nuse external program to diff repository (or selected files):\n\nhg extdiff [OPT]... [FILE]...\n\nShow  differences  between  revisions for the specified files, using an external program. The\ndefault program used is diff, with default options \"-Npru\".\n\nTo select a different program, use the -p/--program option. The program will  be  passed  the\nnames  of  two directories to compare, unless the --per-file option is specified (see below).\nTo pass additional options to the program, use -o/--option. These will be passed  before  the\nnames of the directories or files to compare.\n\nThe --from, --to, and --change options work the same way they do for hg diff.\n\nThe  --per-file  option runs the external program repeatedly on each file to diff, instead of\nonce on two directories. By default, this happens one by one, where the  next  file  diff  is\nopen  in  the external program only once the previous external program (for the previous file\ndiff) has exited. If the external program has a graphical interface, it can open all the file\ndiffs at once instead of one by one. See hg help -e extdiff for information about how to tell\nMercurial that a given program has a graphical interface.\n\nThe --confirm option will prompt the user before each invocation of the external program.  It\nis ignored if --per-file isn't specified.\n\nOptions:\n\n#### -p,\n\ncomparison program to run\n\n#### -o,\n\npass option to comparison program\n\n#### -r,\n\nrevision (DEPRECATED)\n\n--from <REV1>\nrevision to diff from\n\n--to <REV2>\nrevision to diff to\n\n#### -c,\n\nchange made by revision\n\n#### --per-file\n\ncompare each file instead of revision snapshots\n\n#### --confirm\n\nprompt user before each external program invocation\n\n#### --patch\n\ncompare patches for two revisions\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\n#### factotum\n\nhttp authentication with factotum\n\nThis  extension allows the factotum(4) facility on Plan 9 from Bell Labs platforms to provide\nauthentication information for HTTP access. Configuration entries specified in the auth  sec‐\ntion  as  well  as  authentication  information provided in the repository URL are fully sup‐\nported. If no prefix is specified, a value of \"*\" will be assumed.\n\nBy default, keys are specified as:\n\nproto=pass service=hg prefix=<prefix> user=<username> !password=<password>\n\nIf the factotum extension is unable to read the required key, one will be requested  interac‐\ntively.\n\nA configuration section is available to customize runtime behavior. By default, these entries\nare:\n\n[factotum]\nexecutable = /bin/auth/factotum\nmountpoint = /mnt/factotum\nservice = hg\n\nThe executable entry defines the full path to the factotum binary. The mountpoint  entry  de‐\nfines  the  path to the factotum file service. Lastly, the service entry controls the service\nname used when reading keys.\n\n#### fastannotate\n\nyet another annotate implementation that might be faster (EXPERIMENTAL)\n\nThe fastannotate extension provides a 'fastannotate' command that makes use  of  the  linelog\ndata  structure  as a cache layer and is expected to be faster than the vanilla 'annotate' if\nthe cache is present.\n\nIn most cases, fastannotate requires a setup that mainbranch  is  some  pointer  that  always\nmoves forward, to be most efficient.\n\nUsing  fastannotate  together  with  linkrevcache  would speed up building the annotate cache\ngreatly. Run \"debugbuildlinkrevcache\" before \"debugbuildannotatecache\".\n\n[fastannotate]\n# specify the main branch head. the internal linelog will only contain\n# the linear (ignoring p2) \"mainbranch\". since linelog cannot move\n# backwards without a rebuild, this should be something that always moves\n# forward, usually it is \"master\" or \"@\".\nmainbranch = master\n\n# fastannotate supports different modes to expose its feature.\n# a list of combination:\n# - fastannotate: expose the feature via the \"fastannotate\" command which\n#   deals with everything in a most efficient way, and provides extra\n#   features like --deleted etc.\n# - fctx: replace fctx.annotate implementation. note:\n#     a. it is less efficient than the \"fastannotate\" command\n#     b. it will make it practically impossible to access the old (disk\n#        side-effect free) annotate implementation\n#     c. it implies \"hgweb\".\n# - hgweb: replace hgweb's annotate implementation. conflict with \"fctx\".\n# (default: fastannotate)\nmodes = fastannotate\n\n# default format when no format flags are used (default: number)\ndefaultformat = changeset, user, date\n\n# serve the annotate cache via wire protocol (default: False)\n# tip: the .hg/fastannotate directory is portable - can be rsynced\nserver = True\n\n# build annotate cache on demand for every client request (default: True)\n# disabling it could make server response faster, useful when there is a\n# cronjob building the cache.\nserverbuildondemand = True\n\n# update local annotate cache from remote on demand\nclient = False\n\n# path to use when connecting to the remote server (default: default)\nremotepath = default\n\n# minimal length of the history of a file required to fetch linelog from\n# the server. (default: 10)\nclientfetchthreshold = 10\n\n# for \"fctx\" mode, always follow renames regardless of command line option.\n# this is a BC with the original command but will reduced the space needed\n# for annotate cache, and is useful for client-server setup since the\n# server will only provide annotate cache with default options (i.e. with\n# follow). do not affect \"fastannotate\" mode. (default: True)\nforcefollow = True\n\n# for \"fctx\" mode, always treat file as text files, to skip the \"isbinary\"\n# check. this is consistent with the \"fastannotate\" command and could help\n# to avoid a file fetch if remotefilelog is used. (default: True)\nforcetext = True\n\n# use unfiltered repo for better performance.\nunfilteredrepo = True\n\n# sacrifice correctness in some corner cases for performance. it does not\n# affect the correctness of the annotate cache being built. the option\n# is experimental and may disappear in the future (default: False)\nperfhack = True\n\n#### Commands\n\n#### Uncategorized commands\n\n#### fastexport\n\nexport repositories as git fast-import stream\n\n#### Commands\n\n#### Change import/export\n\n#### fastexport\n\nexport repository as git fast-import stream:\n\nhg fastexport [OPTION]... [REV]...\n\nThis command lets you dump a repository as a human-readable text stream.   It  can  be  piped\ninto  corresponding import routines like \"git fast-import\".  Incremental dumps can be created\nby using marks files.\n\nOptions:\n\n#### -r,\n\nrevisions to export\n\n#### -i,\n\nold marks file to read\n\n#### -e,\n\nnew marks file to write\n\n#### -A,\n\nremap usernames using this file\n\n[+] marked option can be specified multiple times\n\n#### fetch\n\npull, update and merge in one command (DEPRECATED)\n\n#### Commands\n\n#### Remote repository management\n\n#### fetch\n\npull changes from a remote repository, merge new changes if needed.:\n\nhg fetch [SOURCE]\n\nThis finds all changes from the repository at the specified path or URL and adds them to  the\nlocal repository.\n\nIf the pulled changes add a new branch head, the head is automatically merged, and the result\nof the merge is committed.  Otherwise, the working directory is updated to  include  the  new\nchanges.\n\nWhen  a  merge is needed, the working directory is first updated to the newly pulled changes.\nLocal changes are then merged into the  pulled  changes.  To  switch  the  merge  order,  use\n--switch-parent.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nReturns 0 on success.\n\nOptions:\n\n#### -r,\n\na specific revision you would like to pull\n\n--edit invoke editor on commit messages\n\n#### --force-editor\n\nedit commit message (DEPRECATED)\n\n#### --switch-parent\n\nswitch parents when merging\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### fix\n\nrewrite file content in changesets or working copy (EXPERIMENTAL)\n\nProvides a command that runs configured tools on the contents of modified files, writing back\nany fixes to the working copy or replacing changesets.\n\nHere is an example configuration that causes hg fix to apply automatic  formatting  fixes  to\nmodified lines in C++ code:\n\n[fix]\nclang-format:command=clang-format --assume-filename={rootpath}\nclang-format:linerange=--lines={first}:{last}\nclang-format:pattern=set:.cpp or .hpp\n\nThe  :command  suboption forms the first part of the shell command that will be used to fix a\nfile. The content of the file is passed on standard input, and the fixed file content is  ex‐\npected  on  standard  output. Any output on standard error will be displayed as a warning. If\nthe exit status is not zero, the file will not be affected. A  placeholder  warning  is  dis‐\nplayed  if  there  is a non-zero exit status but no standard error output. Some values may be\nsubstituted into the command:\n\n{rootpath}  The path of the file being fixed, relative to the repo root\n{basename}  The name of the file being fixed, without the directory path\n\nIf the :linerange suboption is set, the tool will only be run if there are changed lines in a\nfile.  The  value  of this suboption is appended to the shell command once for every range of\nchanged lines in the file. Some values may be substituted into the command:\n\n{first}   The 1-based line number of the first line in the modified range\n{last}    The 1-based line number of the last line in the modified range\n\nDeleted sections of a file will be ignored by :linerange, because there is  no  corresponding\nline range in the version being fixed.\n\nBy  default, tools that set :linerange will only be executed if there is at least one changed\nline range. This is meant to prevent accidents like running a code formatter in  such  a  way\nthat  it  unexpectedly reformats the whole file. If such a tool needs to operate on unchanged\nfiles, it should set the :skipclean suboption to false.\n\nThe :pattern suboption determines which files will be passed through  each  configured  tool.\nSee  hg  help  patterns for  possible  values. However, all patterns are relative to the repo\nroot, even if that text says they are relative to the current working directory. If there are\nfile arguments to hg fix, the intersection of these patterns is used.\n\nThere  is also a configurable limit for the maximum size of file that will be processed by hg\nfix:\n\n[fix]\nmaxfilesize = 2MB\n\nNormally, execution of configured tools  will  continue  after  a  failure  (indicated  by  a\nnon-zero  exit  status).  It can also be configured to abort after the first such failure, so\nthat no files will be affected if any tool fails. This abort will also cause hg  fix to  exit\nwith a non-zero status:\n\n[fix]\nfailure = abort\n\nWhen  multiple tools are configured to affect a file, they execute in an order defined by the\n:priority suboption. The priority suboption has a default value of zero for each tool.  Tools\nare  executed in order of descending priority. The execution order of tools with equal prior‐\nity is unspecified. For example, you could use the 'sort' and 'head' utilities to  keep  only\nthe 10 smallest numbers in a text file by ensuring that 'sort' runs before 'head':\n\n[fix]\nsort:command = sort -n\nhead:command = head -n 10\nsort:pattern = numbers.txt\nhead:pattern = numbers.txt\nsort:priority = 2\nhead:priority = 1\n\nTo  account  for  changes made by each tool, the line numbers used for incremental formatting\nare recomputed before executing the next tool. So, each tool may see different values for the\narguments added by the :linerange suboption.\n\nEach fixer tool is allowed to return some metadata in addition to the fixed file content. The\nmetadata must be placed before the file content on stdout, separated from the file content by\na  zero byte. The metadata is parsed as a JSON value (so, it should be UTF-8 encoded and con‐\ntain no zero bytes). A fixer tool is expected to produce this metadata encoding if  and  only\nif the :metadata suboption is true:\n\n[fix]\ntool:command = tool --prepend-json-metadata\ntool:metadata = true\n\nThe  metadata  values  are  passed  to hooks, which can be used to print summaries or perform\nother post-fixing work. The supported hooks are:\n\n\"postfixfile\"\nRun once for each file in each revision where any fixer tools made changes\nto the file content. Provides \"$HGREV\" and \"$HGPATH\" to identify the file,\nand \"$HGMETADATA\" with a map of fixer names to metadata values from fixer\ntools that affected the file. Fixer tools that didn't affect the file have a\nvalue of None. Only fixer tools that executed are present in the metadata.\n\n\"postfix\"\nRun once after all files and revisions have been handled. Provides\n\"$HGREPLACEMENTS\" with information about what revisions were created and\nmade obsolete. Provides a boolean \"$HGWDIRWRITTEN\" to indicate whether any\nfiles in the working copy were updated. Provides a list \"$HGMETADATA\"\nmapping fixer tool names to lists of metadata values returned from\nexecutions that modified a file. This aggregates the same metadata\npreviously passed to the \"postfixfile\" hook.\n\nFixer tools are run in the repository's root directory. This allows them to  read  configura‐\ntion files from the working copy, or even write to the working copy.  The working copy is not\nupdated to match the revision being fixed. In fact, several revisions may be fixed in  paral‐\nlel.  Writes  to  the working copy are not amended into the revision being fixed; fixer tools\nshould always write fixed file content back to stdout as documented above.\n\n#### Commands\n\n#### File content management\n\n#### fix\n\nrewrite file content in changesets or working directory:\n\nhg fix [OPTION]... [FILE]...\n\nRuns any configured tools to fix the content of files. Only affects files with  changes,  un‐\nless  file  arguments  are  provided. Only affects changed lines of files, unless the --whole\nflag is used. Some tools may always affect the whole file regardless of --whole.\n\nIf --working-dir is used, files with uncommitted changes in the working copy will  be  fixed.\nNote that no backup are made.\n\nIf  revisions  are  specified  with  --source,  those revisions and their descendants will be\nchecked, and they may be replaced with new revisions that have fixed file content.  By  auto‐\nmatically  including the descendants, no merging, rebasing, or evolution will be required. If\nan ancestor of the working copy is included, then the working copy itself will also be fixed,\nand the working copy will be updated to the fixed parent.\n\nWhen  determining what lines of each file to fix at each revision, the whole set of revisions\nbeing fixed is considered, so that fixes to earlier revisions  are  not  forgotten  in  later\nones. The --base flag can be used to override this default behavior, though it is not usually\ndesirable to do so.\n\nOptions:\n\n--all  fix all non-public non-obsolete revisions\n\n--base <REV[+]>\nrevisions to diff against (overrides automatic selection, and applies to  every  revi‐\nsion being fixed)\n\n#### -r,\n\nrevisions to fix (ADVANCED)\n\n#### -s,\n\nfix the specified revisions and their descendants\n\n#### -w, --working-dir\n\nfix the working directory\n\n#### --whole\n\nalways fix every line of a file\n\n[+] marked option can be specified multiple times\n\n#### fsmonitor\n\nFaster status operations with the Watchman file monitor (EXPERIMENTAL)\n\nIntegrates  the  file-watching  program  Watchman with Mercurial to produce faster status re‐\nsults.\n\nOn a particular Linux system, for a real-world repository with over 400,000 files  hosted  on\next4,  vanilla hg status takes 1.3 seconds. On the same system, with fsmonitor it takes about\n0.3 seconds.\n\nfsmonitor requires no configuration -- it will tell Watchman about your repository as  neces‐\nsary. You'll need to install Watchman from https://facebook.github.io/watchman/ and make sure\nit is in your PATH.\n\nfsmonitor is incompatible with the largefiles and eol extensions, and will disable itself  if\nany of those are active.\n\nThe following configuration options exist:\n\n[fsmonitor]\nmode = {off, on, paranoid}\n\nWhen mode = off, fsmonitor will disable itself (similar to not loading the extension at all).\nWhen mode = on, fsmonitor will be enabled (the default).  When  mode  =  paranoid,  fsmonitor\nwill query both Watchman and the filesystem, and ensure that the results are consistent.\n\n[fsmonitor]\ntimeout = (float)\n\nA  value, in seconds, that determines how long fsmonitor will wait for Watchman to return re‐\nsults. Defaults to 2.0.\n\n[fsmonitor]\nblacklistusers = (list of userids)\n\nA list of usernames for which fsmonitor will disable itself altogether.\n\n[fsmonitor]\nwalkoninvalidate = (boolean)\n\nWhether or not to walk the whole repo ourselves when our cached state has  been  invalidated,\nfor  example  when  Watchman has been restarted or .hgignore rules have been changed. Walking\nthe repo in that case can result in competing for I/O with Watchman. For large  repos  it  is\nrecommended  to  set this value to false. You may wish to set this to true if you have a very\nfast filesystem that can outpace the IPC overhead of getting the result  data  for  the  full\nrepo from Watchman. Defaults to false.\n\n[fsmonitor]\nwarnwhenunused = (boolean)\n\nWhether  to  print  a warning during certain operations when fsmonitor would be beneficial to\nperformance but isn't enabled.\n\n[fsmonitor]\nwarnupdatefilecount = (integer)\n# or when mercurial is built with rust support\nwarnupdatefilecountrust = (integer)\n\nIf warnwhenunused is set and fsmonitor isn't enabled, a  warning  will  be  printed  during\nworking directory updates if this many files will be created.\n\n#### git\n\ngrant Mercurial the ability to operate on Git repositories. (EXPERIMENTAL)\n\nThis  is  currently  super experimental. It probably will consume your firstborn a la Rumpel‐\nstiltskin, etc.\n\n#### githelp\n\ntry mapping git commands to Mercurial commands\n\nTries to map a given git command to a Mercurial command:\n\n$ hg githelp -- git checkout master hg update master\n\nIf an unknown command or parameter combination is detected, an error is produced.\n\n#### Commands\n\n#### Help\n\n#### githelp\n\nsuggests the Mercurial equivalent of the given git command:\n\nhg githelp\n\nUsage: hg githelp -- <git command>\n\naliases: git\n\n#### gpg\n\ncommands to sign and verify changesets\n\n#### Commands\n\n#### Signing changes (GPG)\n\n#### sigcheck\n\nverify all the signatures there may be for a particular revision:\n\nhg sigcheck REV\n\nverify all the signatures there may be for a particular revision\n\n#### sign\n\nadd a signature for the current or given revision:\n\nhg sign [OPTION]... [REV]...\n\nIf no revision is given, the parent of the working directory is used, or tip if  no  revision\nis checked out.\n\nThe  gpg.cmd  config  setting can be used to specify the command to run. A default key can be\nspecified with gpg.key.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nOptions:\n\n#### -l, --local\n\nmake the signature local\n\n#### -f, --force\n\nsign even if the sigfile is modified\n\n#### --no-commit\n\ndo not commit the sigfile after signing\n\n#### -k,\n\nthe key id to sign with\n\n#### -m,\n\nuse text as commit message\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### sigs\n\nlist signed changesets:\n\nhg sigs\n\nlist signed changesets\n\n#### graphlog\n\ncommand to view revision graphs from a shell (DEPRECATED)\n\nThe functionality of this extension has been include in core  Mercurial  since  version  2.3.\nPlease use hg log -G ... instead.\n\nThis  extension  adds  a --graph option to the incoming, outgoing and log commands. When this\noptions is given, an ASCII representation of the revision graph is also shown.\n\n#### Commands\n\n#### Change navigation\n\n#### glog\n\nshow revision history alongside an ASCII revision graph:\n\nhg glog [OPTION]... [FILE]\n\nPrint a revision history alongside a revision graph drawn with ASCII characters.\n\nNodes printed as an @ character are parents of the working directory.\n\nThis is an alias to hg log -G.\n\nOptions:\n\n#### -f, --follow\n\nfollow changeset history, or file history across copies and renames\n\n#### --follow-first\n\nonly follow the first parent of merge changesets (DEPRECATED)\n\n#### -d,\n\nshow revisions matching date spec\n\n#### -C, --copies\n\nshow copied files\n\n#### -k,\n\ndo case-insensitive search for a given text\n\n#### -r,\n\nshow the specified revision or revset\n\n#### --removed\n\ninclude revisions where files were removed\n\n#### -m, --only-merges\n\nshow only merges (DEPRECATED)\n\n#### -u,\n\nrevisions committed by user\n\n--only-branch <BRANCH[+]>\nshow only changesets within the given named branch (DEPRECATED)\n\n#### -b,\n\nshow changesets within the given named branch\n\n#### -P,\n\ndo not display revision or any of its ancestors\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -l,\n\nlimit number of changes displayed\n\n#### -M, --no-merges\n\ndo not show merges\n\n--stat output diffstat-style summary of changes\n\n#### -G, --graph\n\nshow the revision DAG\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### hgk\n\nbrowse the repository in a graphical way\n\nThe hgk extension allows browsing the history of a repository in a graphical way. It requires\nTcl/Tk version 8.4 or later. (Tcl/Tk is not distributed with Mercurial.)\n\nhgk consists of two parts: a Tcl script that does the displaying and querying of information,\nand an extension to Mercurial named hgk.py, which provides hooks for hgk to get  information.\nhgk  can be found in the contrib directory, and the extension is shipped in the hgext reposi‐\ntory, and needs to be enabled.\n\nThe hg view command will launch the hgk Tcl script. For this command to work, hgk must be  in\nyour search path. Alternately, you can specify the path to hgk in your configuration file:\n\n[hgk]\npath = /location/of/hgk\n\nhgk  can  make use of the extdiff extension to visualize revisions.  Assuming you had already\nconfigured extdiff vdiff command, just add:\n\n[hgk]\nvdiff=vdiff\n\nRevisions context menu will now display additional entries to fire vdiff on hovered  and  se‐\nlected revisions.\n\n#### Commands\n\n#### Change navigation\n\n#### view\n\nstart interactive history viewer:\n\nhg view [-l LIMIT] [REVRANGE]\n\nstart interactive history viewer\n\nOptions:\n\n#### -l,\n\nlimit number of changes displayed\n\n#### Uncategorized commands\n\n#### highlight\n\nsyntax highlighting for hgweb (requires Pygments)\n\nIt depends on the Pygments syntax highlighting library: http://pygments.org/\n\nThere are the following configuration options:\n\n[web]\npygmentsstyle = <style> (default: colorful)\nhighlightfiles = <fileset> (default: size('<5M'))\nhighlightonlymatchfilename = <bool> (default False)\n\nhighlightonlymatchfilename  will  only  highlight  files if their type could be identified by\ntheir filename. When this is not enabled (the default), Pygments will try very hard to  iden‐\ntify the file type from content and any match (even matches with a low confidence score) will\nbe used.\n\n#### histedit\n\ninteractive history editing\n\nWith this extension installed, Mercurial gains one new command: histedit. Usage  is  as  fol‐\nlows, assuming the following history:\n\n@  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n|    Add delta\n|\no  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n|    Add gamma\n|\no  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n|    Add beta\n|\no  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\nAdd alpha\n\nIf  you  were  to run hg histedit c561b4e977df, you would see the following file open in your\neditor:\n\npick c561b4e977df Add beta\npick 030b686bedc4 Add gamma\npick 7c2fd3b9020c Add delta\n\n# Edit history between c561b4e977df and 7c2fd3b9020c\n#\n# Commits are listed from least to most recent\n#\n# Commands:\n#  p, pick = use commit\n#  e, edit = use commit, but allow edits before making new commit\n#  f, fold = use commit, but combine it with the one above\n#  r, roll = like fold, but discard this commit's description and date\n#  d, drop = remove commit from history\n#  m, mess = edit commit message without changing commit content\n#  b, base = checkout changeset and apply further changesets from there\n#\n\nIn this file, lines beginning with # are ignored. You must specify a rule for  each  revision\nin  your  history. For example, if you had meant to add gamma before beta, and then wanted to\nadd delta in the same revision as beta, you would reorganize the file to look like this:\n\npick 030b686bedc4 Add gamma\npick c561b4e977df Add beta\nfold 7c2fd3b9020c Add delta\n\n# Edit history between c561b4e977df and 7c2fd3b9020c\n#\n# Commits are listed from least to most recent\n#\n# Commands:\n#  p, pick = use commit\n#  e, edit = use commit, but allow edits before making new commit\n#  f, fold = use commit, but combine it with the one above\n#  r, roll = like fold, but discard this commit's description and date\n#  d, drop = remove commit from history\n#  m, mess = edit commit message without changing commit content\n#  b, base = checkout changeset and apply further changesets from there\n#\n\nAt which point you close the editor and histedit starts working. When you specify a fold  op‐\neration,  histedit will open an editor when it folds those revisions together, offering you a\nchance to clean up the commit message:\n\nAdd beta\n*\nAdd delta\n\nEdit the commit message to your liking, then close the editor. The date used for  the  commit\nwill  be  the later of the two commits' dates. For this example, let's assume that the commit\nmessage was changed to Add beta and delta.  After histedit has run and had a chance to remove\nany old or temporary revisions it needed, the history looks like this:\n\n@  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n|    Add beta and delta.\n|\no  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n|    Add gamma\n|\no  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\nAdd alpha\n\nNote that histedit does not remove any revisions (even its own temporary ones) until after it\nhas completed all the editing operations, so it will probably perform  several  strip  opera‐\ntions when it's done. For the above example, it had to run strip twice. Strip can be slow de‐\npending on a variety of factors, so you might need to be a little patient. You can choose  to\nkeep the original revisions by passing the --keep flag.\n\nThe edit operation will drop you back to a command prompt, allowing you to edit files freely,\nor even use hg record to commit some changes as a separate commit. When you're done, any  re‐\nmaining  uncommitted changes will be committed as well. When done, run hg histedit --continue\nto finish this step. If there are uncommitted changes, you'll be prompted for  a  new  commit\nmessage,  but  the  default commit message will be the original message for the edit ed revi‐\nsion, and the date of the original commit will be preserved.\n\nThe message operation will give you a chance to revise a commit message without changing  the\ncontents. It's a shortcut for doing edit immediately followed by hg histedit --continue`.\n\nIf histedit encounters a conflict when moving a revision (while handling pick or fold), it'll\nstop in a similar manner to edit with the difference that it won't prompt you  for  a  commit\nmessage  when  done. If you decide at this point that you don't like how much work it will be\nto rearrange history, or that you made a mistake, you can use hg histedit --abort to  abandon\nthe  new changes you have made and return to the state before you attempted to edit your his‐\ntory.\n\nIf we clone the histedit-ed example repository above and add four more changes, such that  we\nhave the following history:\n\n@  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n|    Add theta\n|\no  5   140988835471   2009-04-27 18:04 -0500   stefan\n|    Add eta\n|\no  4   122930637314   2009-04-27 18:04 -0500   stefan\n|    Add zeta\n|\no  3   836302820282   2009-04-27 18:04 -0500   stefan\n|    Add epsilon\n|\no  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n|    Add beta and delta.\n|\no  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n|    Add gamma\n|\no  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\nAdd alpha\n\nIf  you  run  hg  histedit --outgoing on the clone then it is the same as running hg histedit\n836302820282. If you need plan to push to a repository that Mercurial does not detect  to  be\nrelated to the source repo, you can add a --force option.\n\n#### Config\n\nHistedit  rule lines are truncated to 80 characters by default. You can customize this behav‐\nior by setting a different length in your configuration file:\n\n[histedit]\nlinelen = 120      # truncate rule lines at 120 characters\n\nThe summary of a change can be customized as well:\n\n[histedit]\nsummary-template = '{rev} {bookmarks} {desc|firstline}'\n\nThe customized summary should be kept short enough that rule lines will fit in the configured\nline length. See above if that requires customization.\n\nhg  histedit  attempts to automatically choose an appropriate base revision to use. To change\nwhich base revision is used, define a revset in your configuration file:\n\n[histedit]\ndefaultrev = only(.) & draft()\n\nBy default each edited revision needs to be present in histedit commands.  To remove revision\nyou need to use drop operation. You can configure the drop to be implicit for missing commits\nby adding:\n\n[histedit]\ndropmissing = True\n\nBy default, histedit will close the transaction after each action. For performance  purposes,\nyou  can  configure histedit to use a single transaction across the entire histedit. WARNING:\nThis setting introduces a significant risk of losing the work you've done in  a  histedit  if\nthe histedit aborts unexpectedly:\n\n[histedit]\nsingletransaction = True\n\n#### Commands\n\n#### Change manipulation\n\n#### histedit\n\ninteractively edit changeset history:\n\nhg histedit [OPTIONS] ([ANCESTOR] | --outgoing [URL])\n\nThis command lets you edit a linear series of changesets (up to and including the working di‐\nrectory, which should be clean).  You can:\n\n• pick to [re]order a changeset\n\n• drop to omit changeset\n\n• mess to reword the changeset commit message\n\n• fold to combine it with the preceding changeset (using the later date)\n\n• roll like fold, but discarding this commit's description and date\n\n• edit to edit this changeset (preserving date)\n\n• base to checkout changeset and apply further changesets from there\n\nThere are a number of ways to select the root changeset:\n\n• Specify ANCESTOR directly\n\n• Use --outgoing -- it will be the first linear changeset not included in  destination.  (See\nhg help config.paths.default-push)\n\n• Otherwise,  the  value  from the \"histedit.defaultrev\" config option is used as a revset to\nselect the base revision when ANCESTOR is not specified. The first revision returned by the\nrevset  is used. By default, this selects the editable history that is unique to the ances‐\ntry of the working directory.\n\nIf you use --outgoing, this command will abort if there are ambiguous outgoing revisions. For\nexample, if there are multiple branches containing outgoing revisions.\n\nUse  \"min(outgoing() and ::.)\" or similar revset specification instead of --outgoing to spec‐\nify edit target revision exactly in such ambiguous situation. See hg help revsets for  detail\nabout selecting revisions.\n\nExamples:\n\n• A number of changes have been made.  Revision 3 is no longer needed.\n\nStart history editing from revision 3:\n\nhg histedit -r 3\n\nAn editor opens, containing the list of revisions, with specific actions specified:\n\npick 5339bf82f0ca 3 Zworgle the foobar\npick 8ef592ce7cc4 4 Bedazzle the zerlog\npick 0a9639fcda9d 5 Morgify the cromulancy\n\nAdditional  information about the possible actions to take appears below the list of re‐\nvisions.\n\nTo remove revision 3 from the history, its action (at  the  beginning  of  the  relevant\nline) is changed to 'drop':\n\ndrop 5339bf82f0ca 3 Zworgle the foobar\npick 8ef592ce7cc4 4 Bedazzle the zerlog\npick 0a9639fcda9d 5 Morgify the cromulancy\n\n• A number of changes have been made.  Revision 2 and 4 need to be swapped.\n\nStart history editing from revision 2:\n\nhg histedit -r 2\n\nAn editor opens, containing the list of revisions, with specific actions specified:\n\npick 252a1af424ad 2 Blorb a morgwazzle\npick 5339bf82f0ca 3 Zworgle the foobar\npick 8ef592ce7cc4 4 Bedazzle the zerlog\n\nTo swap revision 2 and 4, its lines are swapped in the editor:\n\npick 8ef592ce7cc4 4 Bedazzle the zerlog\npick 5339bf82f0ca 3 Zworgle the foobar\npick 252a1af424ad 2 Blorb a morgwazzle\n\nReturns  0  on  success,  1 if user intervention is required (not only for intentional \"edit\"\ncommand, but also for resolving unexpected conflicts).\n\nOptions:\n\n--commands <FILE>\nread history edits from the specified file\n\n#### -c, --continue\n\ncontinue an edit already in progress\n\n#### --edit-plan\n\nedit remaining actions list\n\n#### -k, --keep\n\ndon't strip old nodes after edit is complete\n\n#### --abort\n\nabort an edit in progress\n\n#### -o, --outgoing\n\nchangesets not found in destination\n\n#### -f, --force\n\nforce outgoing even for unrelated repositories\n\n#### -r,\n\nfirst revision to be edited\n\n#### -T,\n\ndisplay with template\n\n[+] marked option can be specified multiple times\n\n#### hooklib\n\ncollection of simple hooks for common tasks (EXPERIMENTAL)\n\nThis extension provides a number of simple hooks to handle issues commonly found in reposito‐\nries  with  many contributors: - email notification when changesets move from draft to public\nphase - email notification when changesets are obsoleted - enforcement of draft phase for all\nincoming  changesets  -  enforcement of a no-branch-merge policy - enforcement of a no-multi‐\nple-heads policy\n\nThe implementation of the hooks is subject to change, e.g. whether to implement them as indi‐\nvidual  hooks  or merge them into the notify extension as option. The functionality itself is\nplanned to be supported long-term.\n\n#### infinitepush\n\nstore some pushes in a remote blob store on the server (EXPERIMENTAL)\n\nIMPORTANT: if you use this extension, please contact  mercurial-devel@mercurial-scm.org ASAP.\nThis  extension is believed to be unused and barring learning of users of this functionality,\nwe will delete this code at the end of 2020.\n\n[infinitepush] # Server-side and client-side option. Pattern of the infinitepush  bookmark\nbranchpattern = PATTERN\n\n# Server or client server = False\n\n# Server-side option. Possible values: 'disk' or 'sql'. Fails if not set indextype = disk\n\n#  Server-side  option. Used only if indextype=sql.  # Format: 'IP:PORT:DBNAME:USER:PASS‐\nWORD' sqlhost = IP:PORT:DBNAME:USER:PASSWORD\n\n# Server-side option. Used only if indextype=disk.  # Filesystem path to the  index  store\nindexpath = PATH\n\n# Server-side option. Possible values: 'disk' or 'external' # Fails if not set storetype =\ndisk\n\n# Server-side option.  # Path to the binary that will save bundle  to  the  bundlestore  #\nFormatted cmd line will be passed to it (see putargs) putbinary = put\n\n#  Serser-side  option. Used only if storetype=external.  # Format cmd-line string for put\nbinary. Placeholder: {filename} putargs = {filename}\n\n# Server-side option.  # Path to the binary that get bundle from the bundlestore.  #  For‐\nmatted cmd line will be passed to it (see getargs) getbinary = get\n\n#  Serser-side  option. Used only if storetype=external.  # Format cmd-line string for get\nbinary. Placeholders: {filename} {handle} getargs = {filename} {handle}\n\n# Server-side option logfile = FIlE\n\n# Server-side option loglevel = DEBUG\n\n# Server-side option. Used only if  indextype=sql.   #  Sets  mysql  waittimeout  option.\nwaittimeout = 300\n\n#  Server-side  option. Used only if indextype=sql.  # Sets mysql innodblockwaittimeout\noption.  locktimeout = 120\n\n# Server-side option. Used only if indextype=sql.  # Name of the repository reponame = ''\n\n# Client-side option. Used by --list-remote option. List of remote scratch #  patterns  to\nlist if no patterns are specified.  defaultremotepatterns = ['*']\n\n#  Instructs  infinitepush to forward all received bundle2 parts to the # bundle for stor‐\nage. Defaults to False.  storeallparts = True\n\n# routes each incoming push to the bundlestore. defaults to False pushtobundlestore = True\n\n[remotenames] # Client-side option # This option should be set only if remotenames  exten‐\nsion  is enabled.  # Whether remote bookmarks are tracked by remotenames extension.  book‐\nmarks = True\n\n#### journal\n\ntrack previous positions of bookmarks (EXPERIMENTAL)\n\nThis extension adds a new command: hg journal, which shows you where  bookmarks  were  previ‐\nously located.\n\n#### Commands\n\n#### Change organization\n\n#### journal\n\nshow the previous position of bookmarks and the working copy:\n\nhg journal [OPTION]... [BOOKMARKNAME]\n\nThe  journal  is used to see the previous commits that bookmarks and the working copy pointed\nto. By default the previous locations for the working copy.  Passing  a  bookmark  name  will\nshow all the previous positions of that bookmark. Use the --all switch to show previous loca‐\ntions for all bookmarks and the working copy; each line will then include the bookmark  name,\nor '.' for the working copy, as well.\n\nIf  name  starts  with  re:, the remainder of the name is treated as a regular expression. To\nmatch a name that actually starts with re:, use the prefix literal:.\n\nBy default hg journal only shows the commit hash and the command that  was  running  at  that\ntime. -v/--verbose will show the prior hash, the user, and the time at which it happened.\n\nUse -c/--commits to output log information on each commit hash; at this point you can use the\nusual --patch, --git, --stat and --template switches to alter the log output for these.\n\nhg journal -T json can be used to produce machine readable output.\n\nOptions:\n\n--all  show history for all names\n\n#### -c, --commits\n\nshow commit metadata\n\n#### -p, --patch\n\nshow patch\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -l,\n\nlimit number of changes displayed\n\n--stat output diffstat-style summary of changes\n\n--style <STYLE>\ndisplay using template map file (DEPRECATED)\n\n#### -T,\n\ndisplay with template\n\n#### keyword\n\nexpand keywords in tracked files\n\nThis extension expands RCS/CVS-like or self-customized $Keywords$ in tracked text  files  se‐\nlected by your configuration.\n\nKeywords  are  only  expanded in local repositories and not stored in the change history. The\nmechanism can be regarded as a convenience for the current user or for archive distribution.\n\nKeywords expand to the changeset data pertaining to the latest change relative to the working\ndirectory parent of each file.\n\nConfiguration  is  done  in  the  [keyword],  [keywordset] and [keywordmaps] sections of hgrc\nfiles.\n\nExample:\n\n[keyword]\n# expand keywords in every python file except those matching \"x*\"\n.py =\nx*    = ignore\n\n[keywordset]\n# prefer svn- over cvs-like default keywordmaps\nsvn = True\n\nNote   The more specific you are in your filename patterns the less you lose  speed  in  huge\nrepositories.\n\nFor [keywordmaps] template mapping and expansion demonstration and control run hg kwdemo. See\nhg help templates for a list of available templates and filters.\n\nThree additional date template filters are provided:\n\n#### utcdate\n\n\"2006/09/18 15:13:13\"\n\n#### svnutcdate\n\n\"2006-09-18 15:13:13Z\"\n\n#### svnisodate\n\n\"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\"\n\nThe default template mappings (view with hg kwdemo -d) can be replaced with  customized  key‐\nwords  and  templates.  Again,  run  hg  kwdemo to  control the results of your configuration\nchanges.\n\nBefore changing/disabling active keywords, you must run hg kwshrink to avoid storing expanded\nkeywords in the change history.\n\nTo force expansion after enabling it, or a configuration change, run hg kwexpand.\n\nExpansions  spanning  more than one line and incremental expansions, like CVS' $Log$, are not\nsupported. A keyword template map \"Log = {desc}\" expands to the first line of  the  changeset\ndescription.\n\n#### Commands\n\n#### Uncategorized commands\n\n#### kwdemo\n\nprint [keywordmaps] configuration and an expansion example:\n\nhg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...\n\nShow current, custom, or default keyword template maps and their expansions.\n\nExtend  the  current  configuration  by specifying maps as arguments and using -f/--rcfile to\nsource an external hgrc file.\n\nUse -d/--default to disable current configuration.\n\nSee hg help templates for information on templates and filters.\n\nOptions:\n\n#### -d, --default\n\nshow default keyword template maps\n\n#### -f,\n\nread maps from rcfile\n\n#### kwexpand\n\nexpand keywords in the working directory:\n\nhg kwexpand [OPTION]... [FILE]...\n\nRun after (re)enabling keyword expansion.\n\nkwexpand refuses to run if given files contain local changes.\n\nOptions:\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### kwfiles\n\nshow files configured for keyword expansion:\n\nhg kwfiles [OPTION]... [FILE]...\n\nList which files in the working directory are matched by  the  [keyword]  configuration  pat‐\nterns.\n\nUseful  to  prevent inadvertent keyword expansion and to speed up execution by including only\nfiles that are actual candidates for expansion.\n\nSee hg help keyword on how to construct patterns both for inclusion and exclusion of files.\n\nWith -A/--all and -v/--verbose the codes used to show the status of files are:\n\nK = keyword expansion candidate\nk = keyword expansion candidate (not tracked)\nI = ignored\ni = ignored (not tracked)\n\nOptions:\n\n#### -A, --all\n\nshow keyword status flags of all files\n\n#### -i, --ignore\n\nshow files excluded from expansion\n\n#### -u, --unknown\n\nonly show unknown (not tracked) files\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### kwshrink\n\nrevert expanded keywords in the working directory:\n\nhg kwshrink [OPTION]... [FILE]...\n\nMust be run before changing/disabling active keywords.\n\nkwshrink refuses to run if given files contain local changes.\n\nOptions:\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### largefiles\n\ntrack large binary files\n\nLarge binary files tend to be not very compressible, not very diffable, and not at all merge‐\nable. Such files are not handled efficiently by Mercurial's storage format (revlog), which is\nbased on compressed binary deltas; storing large binary  files  as  regular  Mercurial  files\nwastes bandwidth and disk space and increases Mercurial's memory usage. The largefiles exten‐\nsion addresses these problems by adding a centralized client-server layer on  top  of  Mercu‐\nrial: largefiles live in a central store out on the network somewhere, and you only fetch the\nrevisions that you need when you need them.\n\nlargefiles works by maintaining a \"standin file\" in .hglf/ for each largefile.  The  standins\nare  small (41 bytes: an SHA-1 hash plus newline) and are tracked by Mercurial. Largefile re‐\nvisions are identified by the SHA-1 hash of their contents, which is written to the  standin.\nlargefiles  uses  that  revision ID to get/put largefile revisions from/to the central store.\nThis saves both disk space and bandwidth, since you don't need to retrieve all historical re‐\nvisions of large files when you clone or pull.\n\nTo start a new repository or add new large binary files, just add --large to your hg add com‐\nmand. For example:\n\n$ dd if=/dev/urandom of=randomdata count=2000\n$ hg add --large randomdata\n$ hg commit -m \"add randomdata as a largefile\"\n\nWhen you push a changeset that adds/modifies largefiles to a remote repository, its largefile\nrevisions  will be uploaded along with it.  Note that the remote Mercurial must also have the\nlargefiles extension enabled for this to work.\n\nWhen you pull a changeset that affects largefiles from a remote  repository,  the  largefiles\nfor  the changeset will by default not be pulled down. However, when you update to such a re‐\nvision, any largefiles needed by that revision are downloaded and cached (if they have  never\nbeen  downloaded  before).  One  way to pull largefiles when pulling is thus to use --update,\nwhich will update your working copy to the latest pulled revision  (and  thereby  downloading\nany new largefiles).\n\nIf  you want to pull largefiles you don't need for update yet, then you can use pull with the\n--lfrev option or the hg lfpull command.\n\nIf you know you are pulling from a non-default location and want to download all  the  large‐\nfiles  that correspond to the new changesets at the same time, then you can pull with --lfrev\n\"pulled()\".\n\nIf you just want to ensure that you will have the largefiles needed to merge or  rebase  with\nnew  heads  that  you  are  pulling,  then you can pull with --lfrev \"head(pulled())\" flag to\npre-emptively download any largefiles that are new in the heads you are pulling.\n\nKeep in mind that network access may now be required to update to changesets  that  you  have\nnot  previously  updated to. The nature of the largefiles extension means that updating is no\nlonger guaranteed to be a local-only operation.\n\nIf you already have large files tracked by Mercurial without the  largefiles  extension,  you\nwill  need  to convert your repository in order to benefit from largefiles. This is done with\nthe hg lfconvert command:\n\n$ hg lfconvert --size 10 oldrepo newrepo\n\nIn repositories that already have largefiles in them, any new file over 10MB  will  automati‐\ncally  be added as a largefile. To change this threshold, set largefiles.minsize in your Mer‐\ncurial config file to the minimum size in megabytes to track as a largefile, or use the --lf‐\nsize option to the add command (also in megabytes):\n\n[largefiles]\nminsize = 2\n\n$ hg add --lfsize 2\n\nThe  largefiles.patterns config option allows you to specify a list of filename patterns (see\nhg help patterns) that should always be tracked as largefiles:\n\n[largefiles]\npatterns =\n*.jpg\nre:.*\\.(png|bmp)$\nlibrary.zip\ncontent/audio/*\n\nFiles that match one of these patterns will be added as largefiles regardless of their size.\n\nThe largefiles.minsize and largefiles.patterns config options will be ignored for any reposi‐\ntories  not  already  containing a largefile. To add the first largefile to a repository, you\nmust explicitly do so with the --large flag passed to the hg add command.\n\n#### Commands\n\n#### Uncategorized commands\n\n#### lfconvert\n\nconvert a normal repository to a largefiles repository:\n\nhg lfconvert SOURCE DEST [FILE ...]\n\nConvert repository SOURCE to a new repository DEST, identical to SOURCE except  that  certain\nfiles  will  be  converted  as largefiles: specifically, any file that matches any PATTERN or\nwhose size is above the minimum size threshold is converted as a largefile. The size used  to\ndetermine  whether  or not to track a file as a largefile is the size of the first version of\nthe file. The minimum size can be specified either with --size or in configuration as  large‐‐\nfiles.size.\n\nAfter running this command you will need to make sure that largefiles is enabled anywhere you\nintend to push the new repository.\n\nUse --to-normal to convert largefiles back to normal files; after this, the  DEST  repository\ncan be used without largefiles at all.\n\nOptions:\n\n#### -s,\n\nminimum size (MB) for files to be converted as largefiles\n\n#### --to-normal\n\nconvert from a largefiles repo to a normal repo\n\n#### lfpull\n\npull largefiles for the specified revisions from the specified source:\n\nhg lfpull -r REV... [-e CMD] [--remotecmd CMD] [SOURCE]\n\nPull largefiles that are referenced from local changesets but missing locally, pulling from a\nremote repository to the local cache.\n\nIf SOURCE is omitted, the 'default' path will be used.  See hg help  urls for  more  informa‐\ntion.\n\nSome examples:\n\n• pull largefiles for all branch heads:\n\nhg lfpull -r \"head() and not closed()\"\n\n• pull largefiles on the default branch:\n\nhg lfpull -r \"branch(default)\"\n\nOptions:\n\n#### -r,\n\npull largefiles for these revisions\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### lfs\n\nlfs - large file support (EXPERIMENTAL)\n\nThis  extension allows large files to be tracked outside of the normal repository storage and\nstored on a centralized server, similar to the largefiles extension.  The git-lfs protocol is\nused  when  communicating  with  the server, so existing git infrastructure can be harnessed.\nEven though the files are stored outside of the repository, they are still integrity  checked\nin the same manner as normal files.\n\nThe  files  stored outside of the repository are downloaded on demand, which reduces the time\nto clone, and possibly the local disk usage.  This changes fundamental workflows in  a  DVCS,\nso  careful  thought  should be given before deploying it.  hg convert can be used to convert\nLFS repositories to normal repositories that no longer require  this  extension,  and  do  so\nwithout changing the commit hashes.  This allows the extension to be disabled if the central‐\nized workflow becomes burdensome.  However, the pre and post convert clones will not be  able\nto communicate with each other unless the extension is enabled on both.\n\nTo start a new repository, or to add LFS files to an existing one, just create an .hglfs file\nas described below in the root directory of the repository.  Typically, this file  should  be\nput  under  version  control,  so that the settings will propagate to other repositories with\npush and pull.  During any commit, Mercurial will consult this file to determine if an  added\nor  modified file should be stored externally.  The type of storage depends on the character‐\nistics of the file at each commit.  A file that is near a size threshold may switch back  and\nforth between LFS and normal storage, as needed.\n\nAlternately,  both normal repositories and largefile controlled repositories can be converted\nto LFS by using hg convert and the lfs.track config option described below.  The .hglfs  file\nshould  then  be created and added, to control subsequent LFS selection.  The hashes are also\nunchanged in this case.  The LFS and non-LFS repositories can be  distinguished  because  the\nLFS repository will abort any command if this extension is disabled.\n\nCommitted  LFS  files are held locally, until the repository is pushed.  Prior to pushing the\nnormal repository data, the LFS files that are tracked by the outgoing commits are  automati‐\ncally  uploaded to the configured central server.  No LFS files are transferred on hg pull or\nhg clone.  Instead, the files are downloaded on demand as they need to be read, if  a  cached\ncopy cannot be found locally.  Both committing and downloading an LFS file will link the file\nto a usercache, to speed up future access.  See the usercache config setting described below.\n\nThe extension reads its configuration from a versioned .hglfs configuration file found in the\nroot  of  the  working directory. The .hglfs file uses the same syntax as all other Mercurial\nconfiguration files. It uses a single section, [track].\n\nThe [track] section specifies which files are stored as LFS (or not). Each line is keyed by a\nfile pattern, with a predicate value.  The first file pattern match is used, so put more spe‐\ncific patterns first.  The available predicates are all(), none(), and size(). See  \"hg  help\nfilesets.size\" for the latter.\n\nExample versioned .hglfs file:\n\n[track]\n# No Makefile or python file, anywhere, will be LFS\nMakefile = none()\n.py = none()\n\n.zip = all()\n.exe = size(\">1MB\")\n\n# Catchall for everything not matched above\n= size(\">10MB\")\n\nConfigs:\n\n[lfs]\n# Remote endpoint. Multiple protocols are supported:\n# - http(s)://user:pass@example.com/path\n#   git-lfs endpoint\n# - file:///tmp/path\n#   local filesystem, usually for testing\n# if unset, lfs will assume the remote repository also handles blob storage\n# for http(s) URLs.  Otherwise, lfs will prompt to set this when it must\n# use this value.\n# (default: unset)\nurl = https://example.com/repo.git/info/lfs\n\n# Which files to track in LFS.  Path tests are \".extname\" for file\n# extensions, and \"path:under/some/directory\" for path prefix.  Both\n# are relative to the repository root.\n# File size can be tested with the \"size()\" fileset, and tests can be\n# joined with fileset operators.  (See \"hg help filesets.operators\".)\n#\n# Some examples:\n# - all()                       # everything\n# - none()                      # nothing\n# - size(\">20MB\")               # larger than 20MB\n# - !.txt                     # anything not a *.txt file\n# - .zip | .tar.gz | .7z  # some types of compressed files\n# - path:bin                    # files under \"bin\" in the project root\n# - (.php & size(\">2MB\")) | (.js & size(\">5MB\")) | .tar.gz\n#     | (path:bin & !path:/bin/README) | size(\">1GB\")\n# (default: none())\n#\n# This is ignored if there is a tracked '.hglfs' file, and this setting\n# will eventually be deprecated and removed.\ntrack = size(\">10M\")\n\n# how many times to retry before giving up on transferring an object\nretry = 5\n\n# the local directory to store lfs files for sharing across local clones.\n# If not set, the cache is located in an OS specific cache location.\nusercache = /path/to/global/cache\n\n#### Commands\n\n#### Uncategorized commands\n\n#### logtoprocess\n\nsend ui.log() data to a subprocess (EXPERIMENTAL)\n\nThis extension lets you specify a shell command per ui.log() event, sending all remaining ar‐\nguments to as environment variables to that command.\n\nPositional arguments construct a log message, which is passed in the MSG1  environment  vari‐\nables.  Each  keyword  argument  is set as a OPTUPPERCASEKEY variable (so the key is upper‐\ncased, and prefixed with OPT). The original event name is passed in  the  EVENT  environment\nvariable, and the process ID of mercurial is given in HGPID.\n\nSo  given  a  call  ui.log('foo', 'bar %s ', 'baz', spam='eggs'), a script configured for the\n`foo event can expect an environment with MSG1=bar baz, and OPTSPAM=eggs.\n\nScripts are configured in the [logtoprocess] section, each key an event name.  For example:\n\n[logtoprocess]\ncommandexception = echo \"$MSG1\" > /var/log/mercurialexceptions.log\n\nwould log the warning message and traceback of any failed command dispatch.\n\nScripts are run asynchronously as detached daemon processes; mercurial will not  ensure  that\nthey exit cleanly.\n\nmq\nmanage a stack of patches\n\nThis  extension  lets  you work with a stack of patches in a Mercurial repository. It manages\ntwo stacks of patches - all known patches, and applied patches (subset of known patches).\n\nKnown patches are represented as patch files in the .hg/patches  directory.  Applied  patches\nare both patch files and changesets.\n\nCommon tasks (use hg help COMMAND for more details):\n\ncreate new patch                          qnew\nimport existing patch                     qimport\n\nprint patch series                        qseries\nprint applied patches                     qapplied\n\nadd known patch to applied stack          qpush\nremove patch from applied stack           qpop\nrefresh contents of top applied patch     qrefresh\n\nBy  default,  mq  will  automatically use git patches when required to avoid losing file mode\nchanges, copy records, binary files or empty files creations or deletions. This behavior  can\nbe configured with:\n\n[mq]\ngit = auto/keep/yes/no\n\nIf set to 'keep', mq will obey the [diff] section configuration while preserving existing git\npatches upon qrefresh. If set to 'yes' or 'no', mq will override the [diff] section  and  al‐\nways generate git or regular patches, possibly losing data in the second case.\n\nIt  may  be  desirable for mq changesets to be kept in the secret phase (see hg help phases),\nwhich can be enabled with the following setting:\n\n[mq]\nsecret = True\n\nYou will by default be managing a patch queue named \"patches\". You can create other, indepen‐\ndent patch queues with the hg qqueue command.\n\nIf the working directory contains uncommitted files, qpush, qpop and qgoto abort immediately.\nIf -f/--force is used, the changes are discarded. Setting:\n\n[mq]\nkeepchanges = True\n\nmake them behave as if --keep-changes were passed, and non-conflicting local changes will  be\ntolerated  and  preserved.  If incompatible options such as -f/--force or --exact are passed,\nthis setting is ignored.\n\nThis extension used to provide a strip command. This command now lives in  the  strip  exten‐\nsion.\n\n#### Commands\n\n#### Repository creation\n\n#### qclone\n\nclone main and patch repository at same time:\n\nhg qclone [OPTION]... SOURCE [DEST]\n\nIf  source is local, destination will have no patches applied. If source is remote, this com‐\nmand can not check if patches are applied in source, so cannot guarantee that patches are not\napplied in destination. If you clone remote repository, be sure before that it has no patches\napplied.\n\nSource patch repository is looked for in  <src>/.hg/patches  by  default.  Use  -p  <url>  to\nchange.\n\nThe  patch  directory  must  be a nested Mercurial repository, as would be created by hg init\n--mq.\n\nReturn 0 on success.\n\nOptions:\n\n--pull use pull protocol to copy metadata\n\n#### -U, --noupdate\n\ndo not update the new working directories\n\n#### --uncompressed\n\nuse uncompressed transfer (fast over LAN)\n\n#### -p,\n\nlocation of source patch repository\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n#### qinit\n\ninit a new queue repository (DEPRECATED):\n\nhg qinit [-c]\n\nThe queue repository is unversioned by default. If -c/--create-repo is specified, qinit  will\ncreate a separate nested repository for patches (qinit -c may also be run later to convert an\nunversioned patch repository into a versioned one). You can use qcommit to commit changes  to\nthis queue repository.\n\nThis command is deprecated. Without -c, it's implied by other relevant commands. With -c, use\nhg init --mq instead.\n\nOptions:\n\n#### -c, --create-repo\n\ncreate queue repository\n\n#### Change creation\n\n#### qcommit\n\ncommit changes in the queue repository (DEPRECATED):\n\nhg qcommit [OPTION]... [FILE]...\n\nThis command is deprecated; use hg commit --mq instead.\n\nOptions:\n\n#### -A, --addremove\n\nmark new/missing files as added/removed before committing\n\n#### --close-branch\n\nmark a branch head as closed\n\n#### --amend\n\namend the parent of the working directory\n\n#### -s, --secret\n\nuse the secret phase for committing\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### --force-close-branch\n\nforcibly close branch from a non-head changeset (ADVANCED)\n\n#### -i, --interactive\n\nuse interactive mode\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n[+] marked option can be specified multiple times\n\naliases: qci\n\n#### qnew\n\ncreate a new patch:\n\nhg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]...\n\nqnew creates a new patch on top of the currently-applied patch (if any). The  patch  will  be\ninitialized  with any outstanding changes in the working directory. You may also use -I/--in‐\nclude, -X/--exclude, and/or a list of files after the patch  name  to  add  only  changes  to\nmatching files to the new patch, leaving the rest as uncommitted modifications.\n\n-u/--user and -d/--date can be used to set the (given) user and date, respectively. -U/--cur‐\nrentuser and -D/--currentdate set user to current user and date to current date.\n\n-e/--edit, -m/--message or -l/--logfile set the patch header as well as the  commit  message.\nIf none is specified, the header is empty and the commit message is '[mq]: PATCH'.\n\nUse  the  -g/--git  option  to keep the patch in the git extended diff format. Read the diffs\nhelp topic for more information on why this is important for  preserving  permission  changes\nand copy/rename information.\n\nReturns 0 on successful creation of a new patch.\n\nOptions:\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -f, --force\n\nimport uncommitted changes (DEPRECATED)\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -U, --currentuser\n\nadd \"From: <current user>\" to patch\n\n#### -u,\n\nadd \"From: <USER>\" to patch\n\n#### -D, --currentdate\n\nadd \"Date: <current date>\" to patch\n\n#### -d,\n\nadd \"Date: <DATE>\" to patch\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n[+] marked option can be specified multiple times\n\n#### qrefresh\n\nupdate the current patch:\n\nhg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]...\n\nIf  any  file  patterns are provided, the refreshed patch will contain only the modifications\nthat match those patterns; the remaining modifications will remain in the working directory.\n\nIf -s/--short is specified, files currently included in the patch will be refreshed just like\nmatched files and remain in the patch.\n\nIf  -e/--edit  is  specified,  Mercurial will start your configured editor for you to enter a\nmessage. In case qrefresh fails, you will find a backup  of  your  message  in  .hg/last-mes‐‐\nsage.txt.\n\nhg  add/remove/copy/rename  work  as  usual,  though  you might want to use git-style patches\n(-g/--git or [diff] git=1) to track copies and renames. See the diffs help topic for more in‐\nformation on the git diff format.\n\nReturns 0 on success.\n\nOptions:\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -s, --short\n\nrefresh only files already in the patch and specified files\n\n#### -U, --currentuser\n\nadd/update author field in patch with current user\n\n#### -u,\n\nadd/update author field in patch with given user\n\n#### -D, --currentdate\n\nadd/update date field in patch with current date\n\n#### -d,\n\nadd/update date field in patch with given date\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n[+] marked option can be specified multiple times\n\n#### Change manipulation\n\n#### qfold\n\nfold the named patches into the current patch:\n\nhg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH...\n\nPatches must not yet be applied. Each patch will be successively applied to the current patch\nin the order given. If all the patches apply successfully, the  current  patch  will  be  re‐\nfreshed  with  the  new  cumulative  patch,  and  the  folded  patches  will be deleted. With\n-k/--keep, the folded patch files will not be removed afterwards.\n\nThe header for each folded patch will be concatenated with the current  patch  header,  sepa‐\nrated by a line of * * *.\n\nReturns 0 on success.\n\nOptions:\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -k, --keep\n\nkeep folded patch files\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### Change organization\n\n#### qapplied\n\nprint the patches already applied:\n\nhg qapplied [-1] [-s] [PATCH]\n\nReturns 0 on success.\n\nOptions:\n\n#### -1, --last\n\nshow only the preceding applied patch\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### qdelete\n\nremove patches from queue:\n\nhg qdelete [-k] [PATCH]...\n\nThe  patches must not be applied, and at least one patch is required. Exact patch identifiers\nmust be given. With -k/--keep, the patch files are preserved in the patch directory.\n\nTo stop managing a patch and move it into permanent history, use the hg qfinish command.\n\nOptions:\n\n#### -k, --keep\n\nkeep patch file\n\n#### -r,\n\nstop managing a revision (DEPRECATED)\n\n[+] marked option can be specified multiple times\n\naliases: qremove qrm\n\n#### qfinish\n\nmove applied patches into repository history:\n\nhg qfinish [-a] [REV]...\n\nFinishes the specified revisions (corresponding to applied patches) by moving them out of  mq\ncontrol into regular repository history.\n\nAccepts  a  revision range or the -a/--applied option. If --applied is specified, all applied\nmq revisions are removed from mq control. Otherwise, the given revisions must be at the  base\nof the stack of applied patches.\n\nThis can be especially useful if your changes have been applied to an upstream repository, or\nif you are about to push your changes to upstream.\n\nReturns 0 on success.\n\nOptions:\n\n#### -a, --applied\n\nfinish all applied changesets\n\n#### qgoto\n\npush or pop patches until named patch is at top of stack:\n\nhg qgoto [OPTION]... PATCH\n\nReturns 0 on success.\n\nOptions:\n\n#### --keep-changes\n\ntolerate non-conflicting local changes\n\n#### -f, --force\n\noverwrite any local changes\n\n#### --no-backup\n\ndo not save backup copies of files\n\n#### qguard\n\nset or print guards for a patch:\n\nhg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]\n\nGuards control whether a patch can be pushed. A patch with no  guards  is  always  pushed.  A\npatch  with  a positive guard (\"+foo\") is pushed only if the hg qselect command has activated\nit. A patch with a negative guard (\"-foo\") is never pushed if the hg qselect command has  ac‐\ntivated it.\n\nWith  no  arguments,  print  the currently active guards.  With arguments, set guards for the\nnamed patch.\n\nNote   Specifying negative guards now requires '--'.\n\nTo set guards on another patch:\n\nhg qguard other.patch -- +2.6.17 -stable\n\nReturns 0 on success.\n\nOptions:\n\n#### -l, --list\n\nlist all patches and guards\n\n#### -n, --none\n\ndrop all guards\n\n#### qheader\n\nprint the header of the topmost or specified patch:\n\nhg qheader [PATCH]\n\nReturns 0 on success.\n\n#### qnext\n\nprint the name of the next pushable patch:\n\nhg qnext [-s]\n\nReturns 0 on success.\n\nOptions:\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### qpop\n\npop the current patch off the stack:\n\nhg qpop [-a] [-f] [PATCH | INDEX]\n\nWithout argument, pops off the top of the patch stack. If given a patch name,  keeps  popping\noff patches until the named patch is at the top of the stack.\n\nBy default, abort if the working directory contains uncommitted changes. With --keep-changes,\nabort only if the uncommitted files overlap with patched files. With -f/--force,  backup  and\ndiscard changes made to such files.\n\nReturn 0 on success.\n\nOptions:\n\n#### -a, --all\n\npop all patches\n\n#### -n,\n\nqueue name to pop (DEPRECATED)\n\n#### --keep-changes\n\ntolerate non-conflicting local changes\n\n#### -f, --force\n\nforget any local changes to patched files\n\n#### --no-backup\n\ndo not save backup copies of files\n\n#### qprev\n\nprint the name of the preceding applied patch:\n\nhg qprev [-s]\n\nReturns 0 on success.\n\nOptions:\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### qpush\n\npush the next patch onto the stack:\n\nhg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]\n\nBy default, abort if the working directory contains uncommitted changes. With --keep-changes,\nabort only if the uncommitted files overlap with patched files. With -f/--force,  backup  and\npatch over uncommitted changes.\n\nReturn 0 on success.\n\nOptions:\n\n#### --keep-changes\n\ntolerate non-conflicting local changes\n\n#### -f, --force\n\napply on top of local changes\n\n#### -e, --exact\n\napply the target patch to its recorded parent\n\n#### -l, --list\n\nlist patch name in commit text\n\n#### -a, --all\n\napply all patches\n\n#### -m, --merge\n\nmerge from another queue (DEPRECATED)\n\n#### -n,\n\nmerge queue name (DEPRECATED)\n\n--move reorder patch series and apply only the patch\n\n#### --no-backup\n\ndo not save backup copies of files\n\n#### qqueue\n\nmanage multiple patch queues:\n\nhg qqueue [OPTION] [QUEUE]\n\nSupports  switching  between different patch queues, as well as creating new patch queues and\ndeleting existing ones.\n\nOmitting a queue name or specifying -l/--list will show you the registered queues  -  by  de‐\nfault  the  \"normal\"  patches  queue is registered. The currently active queue will be marked\nwith \"(active)\". Specifying --active will print only the name of the active queue.\n\nTo create a new queue, use -c/--create. The queue is automatically made active, except in the\ncase  where there are applied patches from the currently active queue in the repository. Then\nthe queue will only be created and switching will fail.\n\nTo delete an existing queue, use --delete. You cannot delete the currently active queue.\n\nReturns 0 on success.\n\nOptions:\n\n#### -l, --list\n\nlist all available queues\n\n#### --active\n\nprint name of active queue\n\n#### -c, --create\n\ncreate new queue\n\n#### --rename\n\nrename active queue\n\n#### --delete\n\ndelete reference to queue\n\n#### --purge\n\ndelete queue, and remove patch dir\n\n#### qrename\n\nrename a patch:\n\nhg qrename PATCH1 [PATCH2]\n\nWith one argument, renames the current patch to PATCH1.  With two arguments,  renames  PATCH1\nto PATCH2.\n\nReturns 0 on success.\n\naliases: qmv\n\n#### qrestore\n\nrestore the queue state saved by a revision (DEPRECATED):\n\nhg qrestore [-d] [-u] REV\n\nThis command is deprecated, use hg rebase instead.\n\nOptions:\n\n#### -d, --delete\n\ndelete save entry\n\n#### -u, --update\n\nupdate queue working directory\n\n#### qsave\n\nsave current queue state (DEPRECATED):\n\nhg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]\n\nThis command is deprecated, use hg rebase instead.\n\nOptions:\n\n#### -c, --copy\n\ncopy patch directory\n\n#### -n,\n\ncopy directory name\n\n#### -e, --empty\n\nclear queue status file\n\n#### -f, --force\n\nforce copy\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### qselect\n\nset or print guarded patches to push:\n\nhg qselect [OPTION]... [GUARD]...\n\nUse  the hg qguard command to set or print guards on patch, then use qselect to tell mq which\nguards to use. A patch will be pushed if it has no guards or any positive  guards  match  the\ncurrently  selected  guard,  but  will not be pushed if any negative guards match the current\nguard. For example:\n\nqguard foo.patch -- -stable    (negative guard)\nqguard bar.patch    +stable    (positive guard)\nqselect stable\n\nThis activates the \"stable\" guard. mq will skip foo.patch (because it has a  negative  match)\nbut push bar.patch (because it has a positive match).\n\nWith  no  arguments,  prints the currently active guards.  With one argument, sets the active\nguard.\n\nUse -n/--none to deactivate guards (no other arguments needed).  When no guards  are  active,\npatches with positive guards are skipped and patches with negative guards are pushed.\n\nqselect can change the guards on applied patches. It does not pop guarded patches by default.\nUse --pop to pop back to the last applied patch that is not guarded. Use --reapply (which im‐\nplies --pop) to push back to the current patch afterwards, but skip guarded patches.\n\nUse -s/--series to print a list of all guards in the series file (no other arguments needed).\nUse -v for more information.\n\nReturns 0 on success.\n\nOptions:\n\n#### -n, --none\n\ndisable all guards\n\n#### -s, --series\n\nlist all guards in series file\n\n--pop  pop to before first guarded applied patch\n\n#### --reapply\n\npop, then reapply patches\n\n#### qseries\n\nprint the entire series file:\n\nhg qseries [-ms]\n\nReturns 0 on success.\n\nOptions:\n\n#### -m, --missing\n\nprint patches not in series\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### qtop\n\nprint the name of the current patch:\n\nhg qtop [-s]\n\nReturns 0 on success.\n\nOptions:\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### qunapplied\n\nprint the patches not yet applied:\n\nhg qunapplied [-1] [-s] [PATCH]\n\nReturns 0 on success.\n\nOptions:\n\n#### -1, --first\n\nshow only the first patch\n\n#### -s, --summary\n\nprint first line of patch header\n\n#### File content management\n\n#### qdiff\n\ndiff of the current patch and subsequent modifications:\n\nhg qdiff [OPTION]... [FILE]...\n\nShows a diff which includes the current patch as well as any changes which have been made  in\nthe  working  directory since the last refresh (thus showing what the current patch would be‐\ncome after a qrefresh).\n\nUse hg diff if you only want to see the changes made since the last qrefresh,  or  hg  export\nqtip if  you  want  to  see  changes made by the current patch without including changes made\nsince the qrefresh.\n\nReturns 0 on success.\n\nOptions:\n\n#### -a, --text\n\ntreat all files as text\n\n#### -g, --git\n\nuse git extended diff format (DEFAULT: diff.git)\n\n#### --binary\n\ngenerate binary diffs in git mode (default)\n\n#### --nodates\n\nomit dates from diff headers\n\n#### --noprefix\n\nomit a/ and b/ prefixes from filenames\n\n#### -p, --show-function\n\nshow which function each change is in (DEFAULT: diff.showfunc)\n\n#### --reverse\n\nproduce a diff that undoes the changes\n\n#### -w, --ignore-all-space\n\nignore white space when comparing lines\n\n#### -b, --ignore-space-change\n\nignore changes in the amount of white space\n\n#### -B, --ignore-blank-lines\n\nignore changes whose lines are all blank\n\n#### -Z, --ignore-space-at-eol\n\nignore changes in whitespace at EOL\n\n#### -U,\n\nnumber of lines of context to show\n\n--stat output diffstat-style summary of changes\n\n--root <DIR>\nproduce diffs relative to subdirectory\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### Change import/export\n\n#### qimport\n\nimport a patch or existing changeset:\n\nhg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]...\n\nThe patch is inserted into the series after the last applied patch. If no patches  have  been\napplied, qimport prepends the patch to the series.\n\nThe  patch  will  have  the  same  name  as its source file unless you give it a new one with\n-n/--name.\n\nYou can register an existing patch inside the patch directory with the -e/--existing flag.\n\nWith -f/--force, an existing patch of the same name will be overwritten.\n\nAn existing changeset may be placed under mq control with -r/--rev (e.g. qimport --rev  .  -n\npatch will place the current revision under mq control). With -g/--git, patches imported with\n--rev will use the git diff format. See the diffs help topic for information on why  this  is\nimportant  for  preserving  rename/copy information and permission changes. Use hg qfinish to\nremove changesets from mq control.\n\nTo import a patch from standard input, pass - as the patch file.  When importing  from  stan‐\ndard input, a patch name must be specified using the --name flag.\n\nTo import an existing patch while renaming it:\n\nhg qimport -e existing-patch -n new-name\n\nReturns 0 if import succeeded.\n\nOptions:\n\n#### -e, --existing\n\nimport file in patch directory\n\n#### -n,\n\nname of patch file\n\n#### -f, --force\n\noverwrite existing files\n\n#### -r,\n\nplace existing revisions under mq control\n\n#### -g, --git\n\nuse git extended diff format\n\n#### -P, --push\n\nqpush after importing\n\n[+] marked option can be specified multiple times\n\n#### narrow\n\ncreate clones which fetch history data for subset of files (EXPERIMENTAL)\n\n#### Commands\n\n#### Repository maintenance\n\n#### tracked\n\nshow or change the current narrowspec:\n\nhg tracked [OPTIONS]... [REMOTE]\n\nWith  no argument, shows the current narrowspec entries, one per line. Each line will be pre‐\nfixed with 'I' or 'X' for included or excluded patterns, respectively.\n\nThe narrowspec is comprised of expressions to match  remote  files  and/or  directories  that\nshould  be pulled into your client.  The narrowspec has include and exclude expressions, with\nexcludes always trumping includes: that is, if a file matches an exclude expression, it  will\nbe  excluded  even if it also matches an include expression.  Excluding files that were never\nincluded has no effect.\n\nEach included or excluded entry is in the format described by 'hg help patterns'.\n\nThe options allow you to add or remove included and excluded expressions.\n\nIf --clear is specified, then all previous includes and excludes are DROPPED and replaced  by\nthe new ones specified to --addinclude and --addexclude.  If --clear is specified without any\nfurther options, the narrowspec will be empty and will not match any files.\n\nIf --auto-remove-includes is specified, then those includes that don't match any files  modi‐\nfied by currently visible local commits (those not shared by the remote) will be added to the\nset of explicitly specified includes to remove.\n\n--import-rules accepts a path to a file containing rules, allowing you to  add  --addinclude,\n--addexclude  rules in bulk. Like the other include and exclude switches, the changes are ap‐\nplied immediately.\n\nOptions:\n\n--addinclude <VALUE[+]>\nnew paths to include\n\n--removeinclude <VALUE[+]>\nold paths to no longer include\n\n#### --auto-remove-includes\n\nautomatically choose unused includes to remove\n\n--addexclude <VALUE[+]>\nnew paths to exclude\n\n--import-rules <VALUE>\nimport narrowspecs from a file\n\n--removeexclude <VALUE[+]>\nold paths to no longer exclude\n\n#### --clear\n\nwhether to replace the existing narrowspec\n\n#### --force-delete-local-changes\n\nforces deletion of local changes when narrowing\n\n#### --backup\n\nback up local changes when narrowing (default: True)\n\n#### --update-working-copy\n\nupdate working copy when the store has changed\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### notify\n\nhooks for sending email push notifications\n\nThis extension implements hooks to send email notifications when changesets are sent from  or\nreceived by the local repository.\n\nFirst,  enable  the  extension  as explained in hg help extensions, and register the hook you\nwant to run. incoming and changegroup hooks are run when changesets are received, while  out‐‐\ngoing hooks are for changesets sent to another repository:\n\n[hooks]\n# one email for each incoming changeset\nincoming.notify = python:hgext.notify.hook\n# one email for all incoming changesets\nchangegroup.notify = python:hgext.notify.hook\n\n# one email for all outgoing changesets\noutgoing.notify = python:hgext.notify.hook\n\nThis  registers  the hooks. To enable notification, subscribers must be assigned to reposito‐\nries. The [usersubs] section maps multiple repositories to a given recipient. The  [reposubs]\nsection maps multiple recipients to a single repository:\n\n[usersubs]\n# key is subscriber email, value is a comma-separated list of repo patterns\nuser@host = pattern\n\n[reposubs]\n# key is repo pattern, value is a comma-separated list of subscriber emails\npattern = user@host\n\nA  pattern  is  a glob matching the absolute path to a repository, optionally combined with a\nrevset expression. A revset expression, if present, is separated from the glob by a hash. Ex‐\nample:\n\n[reposubs]\n*/widgets#branch(release) = qa-team@example.com\n\nThis sends to qa-team@example.com whenever a changeset on the release branch triggers a noti‐\nfication in any repository ending in widgets.\n\nIn order to place them under direct user management, [usersubs] and [reposubs]  sections  may\nbe placed in a separate hgrc file and incorporated by reference:\n\n[notify]\nconfig = /path/to/subscriptionsfile\n\nNotifications will not be sent until the notify.test value is set to False; see below.\n\nNotifications content can be tweaked with the following configuration entries:\n\n#### notify.test\n\nIf True, print messages to stdout instead of sending them. Default: True.\n\n#### notify.sources\n\nSpace-separated  list  of  change  sources.  Notifications  are  activated only when a\nchangeset's source is in this list. Sources may be:\n\nserve\n\nchangesets received via http or ssh\n\npull\n\nchangesets received via hg pull\n\nunbundle\n\nchangesets received via hg unbundle\n\npush\n\nchangesets sent or received via hg push\n\nbundle\n\nchangesets sent via hg unbundle\n\nDefault: serve.\n\n#### notify.strip\n\nNumber of leading slashes to strip from url paths. By default, notifications reference\nrepositories  with  their absolute path. notify.strip lets you turn them into relative\npaths. For example, notify.strip=3 will change /long/path/repository into  repository.\nDefault: 0.\n\n#### notify.domain\n\nDefault  email  domain  for  sender or recipients with no explicit domain.  It is also\nused for the domain part of the Message-Id when using notify.messageidseed.\n\n#### notify.messageidseed\n\nCreate deterministic Message-Id headers for the mails based on the seed and the  revi‐\nsion identifier of the first commit in the changeset.\n\n#### notify.style\n\nStyle file to use when formatting emails.\n\n#### notify.template\n\nTemplate to use when formatting emails.\n\n#### notify.incoming\n\nTemplate to use when run as an incoming hook, overriding notify.template.\n\n#### notify.outgoing\n\nTemplate to use when run as an outgoing hook, overriding notify.template.\n\n#### notify.changegroup\n\nTemplate to use when running as a changegroup hook, overriding notify.template.\n\n#### notify.maxdiff\n\nMaximum number of diff lines to include in notification email. Set to 0 to disable the\ndiff, or -1 to include all of it. Default: 300.\n\n#### notify.maxdiffstat\n\nMaximum number of diffstat lines to include in notification email. Set to  -1  to  in‐\nclude all of it. Default: -1.\n\n#### notify.maxsubject\n\nMaximum number of characters in email's subject line. Default: 67.\n\n#### notify.diffstat\n\nSet to True to include a diffstat before diff content. Default: True.\n\n#### notify.showfunc\n\nIf set, override diff.showfunc for the diff content. Default: None.\n\n#### notify.merge\n\nIf True, send notifications for merge changesets. Default: True.\n\n#### notify.mbox\n\nIf set, append mails to this mbox file instead of sending. Default: None.\n\n#### notify.fromauthor\n\nIf set, use the committer of the first changeset in a changegroup for the \"From\" field\nof the notification mail. If not set, take the user from the pushing  repo.   Default:\nFalse.\n\n#### notify.reply-to-predecessor (EXPERIMENTAL)\n\nIf  set and the changeset has a predecessor in the repository, try to thread the noti‐\nfication mail with the predecessor. This adds the \"In-Reply-To\" header to the  notifi‐\ncation  mail  with  a  reference to the predecessor with the smallest revision number.\nMail threads can still be torn, especially when changesets are folded.\n\nThis option must  be used in combination with notify.messageidseed.\n\nIf set, the following entries will also be used to customize the notifications:\n\n#### email.from\n\nEmail From address to use if none can be found in the generated email content.\n\n#### web.baseurl\n\nRoot repository URL to combine with repository paths when making references. See  also\nnotify.strip.\n\n#### pager\n\nbrowse command output with an external pager (DEPRECATED)\n\nForcibly  enable  paging for individual commands that don't typically request pagination with\nthe attend-<command> option. This setting takes precedence over ignore options and defaults:\n\n[pager]\nattend-cat = false\n\n#### patchbomb\n\ncommand to send changesets as (a series of) patch emails\n\nThe series is started off with a \"[PATCH 0 of N]\" introduction, which describes the series as\na whole.\n\nEach  patch  email  has  a  Subject line of \"[PATCH M of N] ...\", using the first line of the\nchangeset description as the subject text. The message contains two or three body parts:\n\n• The changeset description.\n\n• [Optional] The result of running diffstat on the patch.\n\n• The patch itself, as generated by hg export.\n\nEach message refers to the first in the series using the In-Reply-To and References  headers,\nso they will show up as a sequence in threaded mail and news readers, and in mail archives.\n\nTo configure other defaults, add a section like this to your configuration file:\n\n[email]\nfrom = My Name <my@email>\nto = recipient1, recipient2, ...\ncc = cc1, cc2, ...\nbcc = bcc1, bcc2, ...\nreply-to = address1, address2, ...\n\nUse  [patchbomb] as configuration section name if you need to override global [email] address\nsettings.\n\nThen you can use the hg email command to mail a series of changesets as a patchbomb.\n\nYou can also either configure the method option in the email section to be a sendmail compat‐\nible  mailer or fill out the [smtp] section so that the patchbomb extension can automatically\nsend patchbombs directly from the commandline. See the [email] and [smtp] sections in hgrc(5)\nfor details.\n\nBy  default, hg email will prompt for a To or CC header if you do not supply one via configu‐\nration or the command line.  You can override this to never prompt by  configuring  an  empty\nvalue:\n\n[email]\ncc =\n\nYou  can  control  the  default inclusion of an introduction message with the patchbomb.intro\nconfiguration option. The configuration is always overwritten  by  command  line  flags  like\n--intro and --desc:\n\n[patchbomb]\nintro=auto   # include introduction message if more than 1 patch (default)\nintro=never  # never include an introduction message\nintro=always # always include an introduction message\n\nYou  can  specify  a  template  for flags to be added in subject prefixes. Flags specified by\n--flag option are exported as {flags} keyword:\n\n[patchbomb]\nflagtemplate = \"{separate(' ',\nifeq(branch, 'default', '', branch|upper),\nflags)}\"\n\nYou can set patchbomb to always ask for confirmation by setting patchbomb.confirm to true.\n\n#### Commands\n\n#### Change import/export\n\n#### email\n\nsend changesets by email:\n\nhg email [OPTION]... [DEST]...\n\nBy default, diffs are sent in the format generated by hg export, one per message. The  series\nstarts with a \"[PATCH 0 of N]\" introduction, which describes the series as a whole.\n\nEach  patch  email  has  a  Subject line of \"[PATCH M of N] ...\", using the first line of the\nchangeset description as the subject text.  The message contains two or three  parts.  First,\nthe changeset description.\n\nWith  the  -d/--diffstat  option, if the diffstat program is installed, the result of running\ndiffstat on the patch is inserted.\n\nFinally, the patch itself, as generated by hg export.\n\nWith the -d/--diffstat or --confirm options, you will be presented with a  final  summary  of\nall messages and asked for confirmation before the messages are sent.\n\nBy  default  the  patch  is  included as text in the email body for easy reviewing. Using the\n-a/--attach option will instead create an attachment for the patch. With -i/--inline  an  in‐\nline  attachment  will be created. You can include a patch both as text in the email body and\nas a regular or an inline attachment by combining the -a/--attach  or  -i/--inline  with  the\n--body option.\n\nWith -B/--bookmark changesets reachable by the given bookmark are selected.\n\nWith -o/--outgoing, emails will be generated for patches not found in the destination reposi‐\ntory (or only those which are ancestors of the specified revisions if any are provided)\n\nWith -b/--bundle, changesets are selected as for --outgoing, but a single email containing  a\nbinary  Mercurial  bundle  as an attachment will be sent. Use the patchbomb.bundletype config\noption to control the bundle type as with hg bundle --type.\n\nWith -m/--mbox, instead of previewing each patchbomb message in a pager or sending  the  mes‐\nsages  directly,  it will create a UNIX mailbox file with the patch emails. This mailbox file\ncan be previewed with any mail user agent which supports UNIX mbox files.\n\nWith -n/--test, all steps will run, but mail will not be sent.  You will be prompted  for  an\nemail recipient address, a subject and an introductory message describing the patches of your\npatchbomb.  Then when all is done, patchbomb messages are displayed.\n\nIn case email sending fails, you will find a backup of your series  introductory  message  in\n.hg/last-email.txt.\n\nThe  default  behavior  of this command can be customized through configuration. (See hg help\npatchbomb for details)\n\nExamples:\n\nhg email -r 3000          # send patch 3000 only\nhg email -r 3000 -r 3001  # send patches 3000 and 3001\nhg email -r 3000:3005     # send patches 3000 through 3005\nhg email 3000             # send patch 3000 (deprecated)\n\nhg email -o               # send all patches not in default\nhg email -o DEST          # send all patches not in DEST\nhg email -o -r 3000       # send all ancestors of 3000 not in default\nhg email -o -r 3000 DEST  # send all ancestors of 3000 not in DEST\n\nhg email -B feature       # send all ancestors of feature bookmark\n\nhg email -b               # send bundle of all patches not in default\nhg email -b DEST          # send bundle of all patches not in DEST\nhg email -b -r 3000       # bundle of all ancestors of 3000 not in default\nhg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST\n\nhg email -o -m mbox &&    # generate an mbox file...\nmutt -R -f mbox         # ... and view it with mutt\nhg email -o -m mbox &&    # generate an mbox file ...\nformail -s sendmail \\   # ... and use formail to send from the mbox\n-bm -t < mbox         # ... using sendmail\n\nBefore using this command, you will need to enable email in your hgrc. See the  [email]  sec‐\ntion in hgrc(5) for details.\n\nOptions:\n\n#### -g, --git\n\nuse git extended diff format\n\n#### --plain\n\nomit hg patch header\n\n#### -o, --outgoing\n\nsend changes not found in the target repository\n\n#### -b, --bundle\n\nsend changes not in target as a binary bundle\n\n#### -B,\n\nsend changes only reachable by given bookmark\n\n--bundlename <NAME>\nname of the bundle attachment file (default: bundle)\n\n#### -r,\n\na revision to send\n\n#### --force\n\nrun even when remote repository is unrelated (with -b/--bundle)\n\n--base <REV[+]>\na base changeset to specify instead of a destination (with -b/--bundle)\n\n#### --intro\n\nsend an introduction email for a single patch\n\n--body send patches as inline message text (default)\n\n#### -a, --attach\n\nsend patches as attachments\n\n#### -i, --inline\n\nsend patches as inline attachments\n\n--bcc <EMAIL[+]>\nemail addresses of blind carbon copy recipients\n\n#### -c,\n\nemail addresses of copy recipients\n\n#### --confirm\n\nask for confirmation before sending\n\n#### -d, --diffstat\n\nadd diffstat output to messages\n\n--date <DATE>\nuse the given date as the sending date\n\n--desc <FILE>\nuse the given file as the series description\n\n#### -f,\n\nemail address of sender\n\n#### -n, --test\n\nprint messages that would be sent\n\n#### -m,\n\nwrite messages to mbox file instead of sending them\n\n--reply-to <EMAIL[+]>\nemail addresses replies should be sent to\n\n#### -s,\n\nsubject of first message (intro or single patch)\n\n--in-reply-to <MSGID>\nmessage identifier to reply to\n\n--flag <FLAG[+]>\nflags to add in subject prefixes\n\n#### -t,\n\nemail addresses of recipients\n\n#### -e,\n\nspecify ssh command to use\n\n--remotecmd <CMD>\nspecify hg command to run on the remote side\n\n#### --insecure\n\ndo not verify server certificate (ignoring web.cacerts config)\n\n[+] marked option can be specified multiple times\n\n#### phabricator\n\nsimple Phabricator integration (EXPERIMENTAL)\n\nThis  extension provides a phabsend command which sends a stack of changesets to Phabricator,\nand a phabread command which prints a stack of revisions in a format suitable for hg  import,\nand a phabupdate command to update statuses in batch.\n\nA \"phabstatus\" view for hg show is also provided; it displays status information of Phabrica‐\ntor differentials associated with unfinished changesets.\n\nBy default, Phabricator requires Test Plan which might  prevent  some  changeset  from  being\nsent. The requirement could be disabled by changing differential.require-test-plan-field con‐\nfig server side.\n\nConfig:\n\n[phabricator]\n# Phabricator URL\nurl = https://phab.example.com/\n\n# Repo callsign. If a repo has a URL https://$HOST/diffusion/FOO, then its\n# callsign is \"FOO\".\ncallsign = FOO\n\n# curl command to use. If not set (default), use builtin HTTP library to\n# communicate. If set, use the specified curl command. This could be useful\n# if you need to specify advanced options that is not easily supported by\n# the internal library.\ncurlcmd = curl --connect-timeout 2 --retry 3 --silent\n\n# retry failed command N time (default 0). Useful when using the extension\n# over flakly connection.\n#\n# We wait `retry.interval` between each retry, in seconds.\n# (default 1 second).\nretry = 3\nretry.interval = 10\n\n# the retry option can combine well with the http.timeout one.\n#\n# For example to give up on http request after 20 seconds:\n[http]\ntimeout=20\n\n[auth]\nexample.schemes = https\nexample.prefix = phab.example.com\n\n# API token. Get it from https://$HOST/conduit/login/\nexample.phabtoken = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n#### Commands\n\n#### Change import/export\n\n#### phabimport\n\nimport patches from Phabricator for the specified Differential Revisions:\n\nhg phabimport DREVSPEC... [OPTIONS]\n\nThe patches are read and applied starting at the parent of the working directory.\n\nSee hg help phabread for how to specify DREVSPEC.\n\nOptions:\n\n#### --stack\n\nimport dependencies as well\n\n--test-vcr <VALUE>\nPath to a vcr file. If nonexistent, will record a new vcr transcript,  otherwise  will\nmock all http requests using the specified vcr file. (ADVANCED)\n\n#### phabread\n\nprint patches from Phabricator suitable for importing:\n\nhg phabread DREVSPEC... [OPTIONS]\n\nDREVSPEC  could  be  a  Differential Revision identity, like D123, or just the number 123. It\ncould also have common operators like +, -, &, (, ) for complex queries. Prefix  :  could  be\nused  to  select  a stack.  If multiple DREVSPEC values are given, the result is the union of\neach individually evaluated value.  No attempt is currently made to reorder the values to run\nfrom parent to child.\n\nabandoned,  accepted,  closed,  needsreview, needsrevision could be used to filter patches by\nstatus. For performance reason, they only represent a subset  of  non-status  selections  and\ncannot be used alone.\n\nFor  example,  :D6+8-(2+D4)  selects  a  stack up to D6, plus D8 and exclude D2 and D4. :D9 &\nneedsreview selects \"Needs Review\" revisions in a stack up to D9.\n\nIf --stack is given, follow dependencies information and read all patches.  It is  equivalent\nto the : operator.\n\nOptions:\n\n#### --stack\n\nread dependencies\n\n--test-vcr <VALUE>\nPath  to  a vcr file. If nonexistent, will record a new vcr transcript, otherwise will\nmock all http requests using the specified vcr file. (ADVANCED)\n\n#### phabsend\n\nupload changesets to Phabricator:\n\nhg phabsend REV [OPTIONS]\n\nIf there are multiple revisions specified, they will be send as a stack with a linear  depen‐\ndencies relationship using the order specified by the revset.\n\nFor  the first time uploading changesets, local tags will be created to maintain the associa‐\ntion. After the first time, phabsend will check obsstore and tags information so it can  fig‐\nure out whether to update an existing Differential Revision, or create a new one.\n\nIf  --amend is set, update commit messages so they have the Differential Revision URL, remove\nrelated tags. This is similar to what arcanist will do, and is more  desired  in  author-push\nworkflows. Otherwise, use local tags to record the Differential Revision association.\n\nThe  --confirm  option lets you confirm changesets before sending them. You can also add fol‐\nlowing to your configuration file to make it default behaviour:\n\n[phabsend]\nconfirm = true\n\nBy default, a separate review will be created for each commit that is selected, and will have\nthe  same  parent/child  relationship in Phabricator.  If --fold is set, multiple commits are\nrolled up into a single review as if diffed from the parent of  the  first  revision  to  the\nlast.  The commit messages are concatenated in the summary field on Phabricator.\n\nphabsend  will check obsstore and the above association to decide whether to update an exist‐\ning Differential Revision, or create a new one.\n\nOptions:\n\n#### -r,\n\nrevisions to send\n\n#### --amend\n\nupdate commit messages (default: True)\n\n--reviewer <VALUE[+]>\nspecify reviewers\n\n--blocker <VALUE[+]>\nspecify blocking reviewers\n\n#### -m,\n\nadd a comment to Revisions with new/updated Diffs\n\n#### --confirm\n\nask for confirmation before sending\n\n--fold combine the revisions into one review\n\n--test-vcr <VALUE>\nPath to a vcr file. If nonexistent, will record a new vcr transcript,  otherwise  will\nmock all http requests using the specified vcr file. (ADVANCED)\n\n[+] marked option can be specified multiple times\n\n#### phabupdate\n\nupdate Differential Revision in batch:\n\nhg phabupdate [DREVSPEC...| -r REV...] [OPTIONS]\n\nDREVSPEC selects revisions. See hg help phabread for its usage.\n\nOptions:\n\n#### --accept\n\naccept revisions\n\n#### --reject\n\nreject revisions\n\n#### --request-review\n\nrequest review on revisions\n\n#### --abandon\n\nabandon revisions\n\n#### --reclaim\n\nreclaim revisions\n\n#### --close\n\nclose revisions\n\n#### --reopen\n\nreopen revisions\n\n#### --plan-changes\n\nplan changes for revisions\n\n#### --resign\n\nresign as a reviewer from revisions\n\n#### --commandeer\n\ncommandeer revisions\n\n#### -m,\n\ncomment on the last revision\n\n#### -r,\n\nlocal revision to update\n\n--test-vcr <VALUE>\nPath  to  a vcr file. If nonexistent, will record a new vcr transcript, otherwise will\nmock all http requests using the specified vcr file. (ADVANCED)\n\n#### Uncategorized commands\n\n#### purge\n\ncommand to delete untracked files from the working directory (DEPRECATED)\n\nThe functionality of this extension has been included in core Mercurial  since  version  5.7.\nPlease  use hg purge ... instead. hg purge --confirm is now the default, unless the extension\nis enabled for backward compatibility.\n\n#### rebase\n\ncommand to move sets of revisions to a different ancestor\n\nThis extension lets you rebase changesets in an existing Mercurial repository.\n\nFor more information: https://mercurial-scm.org/wiki/RebaseExtension\n\n#### Commands\n\n#### Change manipulation\n\n#### rebase\n\nmove changeset (and descendants) to a different branch:\n\nhg rebase [[-s REV]... | [-b REV]... | [-r REV]...] [-d REV] [OPTION]...\n\nRebase uses repeated merging to graft changesets from one part of history (the  source)  onto\nanother  (the  destination).  This  can be useful for linearizing local changes relative to a\nmaster development tree.\n\nPublished commits cannot be rebased (see hg help phases).  To copy commits, see hg help graft\n.\n\nIf  you  don't specify a destination changeset (-d/--dest), rebase will use the same logic as\nhg merge to pick a destination.  if the current branch contains exactly one other  head,  the\nother  head  is  merged with by default.  Otherwise, an explicit revision with which to merge\nwith must be provided.  (destination changeset is not modified by rebasing, but  new  change‐\nsets are added as its descendants.)\n\nHere are the ways to select changesets:\n\n1. Explicitly select them using --rev.\n\n2. Use --source to select a root changeset and include all of its descendants.\n\n3. Use  --base  to  select  a  changeset; rebase will find ancestors and their descendants\nwhich are not also ancestors of the destination.\n\n4. If you do not specify any of --rev, --source, or --base, rebase will use  --base  .  as\nabove.\n\nIf --source or --rev is used, special names SRC and ALLSRC can be used in --dest. Destination\nwould be calculated per source revision with SRC substituted by that single  source  revision\nand ALLSRC substituted by all source revisions.\n\nRebase  will destroy original changesets unless you use --keep.  It will also move your book‐\nmarks (even if you do).\n\nSome changesets may be dropped if they do not contribute changes (e.g. merges from the desti‐\nnation branch).\n\nUnlike  merge, rebase will do nothing if you are at the branch tip of a named branch with two\nheads. You will need to explicitly specify source and/or destination.\n\nIf you need to use a tool to automate merge/conflict decisions,  you  can  specify  one  with\n--tool,  see  hg  help merge-tools.  As a caveat: the tool will not be used to mediate when a\nfile was deleted, there is no hook presently available for this.\n\nIf a rebase is interrupted to manually resolve a conflict, it can be  continued  with  --con‐\ntinue/-c, aborted with --abort/-a, or stopped with --stop.\n\nExamples:\n\n• move \"local changes\" (current commit back to branching point) to the current branch tip af‐\nter a pull:\n\nhg rebase\n\n• move a single changeset to the stable branch:\n\nhg rebase -r 5f493448 -d stable\n\n• splice a commit and all its descendants onto another part of history:\n\nhg rebase --source c0c3 --dest 4cf9\n\n• rebase everything on a branch marked by a bookmark onto the default branch:\n\nhg rebase --base myfeature --dest default\n\n• collapse a sequence of changes into a single commit:\n\nhg rebase --collapse -r 1520:1525 -d .\n\n• move a named branch while preserving its name:\n\nhg rebase -r \"branch(featureX)\" -d 1.3 --keepbranches\n\n• stabilize orphaned changesets so history looks linear:\n\nhg rebase -r 'orphan()-obsolete()' -d 'first(max((successors(max(roots(ALLSRC) & ::SRC)^)-obsolete())::) + max(::((roots(ALLSRC) & ::SRC)^)-obsolete()))'\n\nConfiguration Options:\n\nYou can make rebase require a destination if you set the following config option:\n\n[commands]\nrebase.requiredest = True\n\nBy default, rebase will close the transaction after each commit.  For  performance  purposes,\nyou  can configure rebase to use a single transaction across the entire rebase. WARNING: This\nsetting introduces a significant risk of losing the work you've done in a rebase if  the  re‐\nbase aborts unexpectedly:\n\n[rebase]\nsingletransaction = True\n\nBy  default, rebase writes to the working copy, but you can configure it to run in-memory for\nbetter performance. When the rebase is not moving the parent(s) of the working copy (AKA  the\n\"currently  checked  out changesets\"), this may also allow it to run even if the working copy\nis dirty:\n\n[rebase]\nexperimental.inmemory = True\n\nReturn Values:\n\nReturns 0 on success, 1 if nothing to rebase or there are unresolved conflicts.\n\nOptions:\n\n#### -s,\n\nrebase the specified changesets and their descendants\n\n#### -b,\n\nrebase everything from branching point of specified changeset\n\n#### -r,\n\nrebase these revisions\n\n#### -d,\n\nrebase onto the specified changeset\n\n#### --collapse\n\ncollapse the rebased changesets\n\n#### -m,\n\nuse text as collapse commit message\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### -l,\n\nread collapse commit message from file\n\n#### -k, --keep\n\nkeep original changesets\n\n#### --keepbranches\n\nkeep original branch names\n\n#### -D, --detach\n\n(DEPRECATED)\n\n#### -i, --interactive\n\n(DEPRECATED)\n\n#### -t,\n\nspecify merge tool\n\n--stop stop interrupted rebase\n\n#### -c, --continue\n\ncontinue an interrupted rebase\n\n#### -a, --abort\n\nabort an interrupted rebase\n\n--auto-orphans <VALUE>\nautomatically rebase orphan revisions in the specified revset (EXPERIMENTAL)\n\n#### -n, --dry-run\n\ndo not perform actions, just print output\n\n#### -T,\n\ndisplay with template\n\n#### --confirm\n\nask before applying actions\n\n[+] marked option can be specified multiple times\n\n#### record\n\ncommands to interactively select changes for commit/qrefresh (DEPRECATED)\n\nThe feature provided by this extension has been moved into core Mercurial as hg commit  --in‐‐\nteractive.\n\n#### Commands\n\n#### Change creation\n\n#### qrecord\n\ninteractively record a new patch:\n\nhg qrecord [OPTION]... PATCH [FILE]...\n\nSee hg help qnew & hg help record for more information and usage.\n\n#### record\n\ninteractively select changes to commit:\n\nhg record [OPTION]... [FILE]...\n\nIf  a  list  of  files  is  omitted, all changes reported by hg status will be candidates for\nrecording.\n\nSee hg help dates for a list of formats valid for -d/--date.\n\nIf using the text interface (see hg help config), you will be prompted for whether to  record\nchanges  to  each modified file, and for files with multiple changes, for each change to use.\nFor each query, the following responses are possible:\n\ny - record this change\nn - skip this change\ne - edit this change manually\n\ns - skip remaining changes to this file\nf - record remaining changes to this file\n\nd - done, skip remaining changes and files\na - record all changes to all remaining files\nq - quit, recording no changes\n\n? - display help\n\nThis command is not available when committing a merge.\n\nOptions:\n\n#### -A, --addremove\n\nmark new/missing files as added/removed before committing\n\n#### --close-branch\n\nmark a branch head as closed\n\n#### --amend\n\namend the parent of the working directory\n\n#### -s, --secret\n\nuse the secret phase for committing\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n#### --force-close-branch\n\nforcibly close branch from a non-head changeset (ADVANCED)\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -S, --subrepos\n\nrecurse into subrepositories\n\n#### -w, --ignore-all-space\n\nignore white space when comparing lines\n\n#### -b, --ignore-space-change\n\nignore changes in the amount of white space\n\n#### -B, --ignore-blank-lines\n\nignore changes whose lines are all blank\n\n#### -Z, --ignore-space-at-eol\n\nignore changes in whitespace at EOL\n\n[+] marked option can be specified multiple times\n\n#### releasenotes\n\ngenerate release notes from commit messages (EXPERIMENTAL)\n\nIt is common to maintain files detailing changes in a project between  releases.  Maintaining\nthese  files  can  be  difficult and time consuming.  The hg releasenotes command provided by\nthis extension makes the process simpler by automating it.\n\n#### Commands\n\n#### Change navigation\n\n#### releasenotes\n\nparse release notes from commit messages into an output file:\n\nhg releasenotes [-r REV] [-c] FILE\n\nGiven an output file and set of revisions, this command will parse commit  messages  for  re‐\nlease notes then add them to the output file.\n\nRelease  notes  are defined in commit messages as ReStructuredText directives. These have the\nform:\n\n.. directive:: title\n\ncontent\n\nEach directive maps to an output section in a generated release notes file, which  itself  is\nReStructuredText.  For  example,  the .. feature:: directive would map to a New Features sec‐\ntion.\n\nRelease note directives can be either short-form or long-form. In short- form, title is omit‐\nted  and  the release note is rendered as a bullet list. In long form, a sub-section with the\ntitle title is added to the section.\n\nThe FILE argument controls the output file to write gathered release notes to. The format  of\nthe file is:\n\nSection 1\n=========\n\n...\n\nSection 2\n=========\n\n...\n\nOnly sections with defined release notes are emitted.\n\nIf a section only has short-form notes, it will consist of bullet list:\n\nSection\n=======\n\n* Release note 1\n* Release note 2\n\nIf a section has long-form notes, sub-sections will be emitted:\n\nSection\n=======\n\nNote 1 Title\n------------\n\nDescription of the first long-form note.\n\nNote 2 Title\n------------\n\nDescription of the second long-form note.\n\nIf  the  FILE argument points to an existing file, that file will be parsed for release notes\nhaving the format that would be generated by this command. The notes from the processed  com‐\nmit messages will be merged into this parsed set.\n\nDuring release notes merging:\n\n• Duplicate items are automatically ignored\n\n• Items  that  are  different  are  automatically ignored if the similarity is greater than a\nthreshold.\n\nThis means that the release notes file can be updated independently  from  this  command  and\nchanges  should not be lost when running this command on that file. A particular use case for\nthis is to tweak the wording of a release note after it has been added to the  release  notes\nfile.\n\nThe -c/--check option checks the commit message for invalid admonitions.\n\nThe  -l/--list  option, presents the user with a list of existing available admonitions along\nwith their title. This also includes the custom admonitions (if any).\n\nOptions:\n\n#### -r,\n\nrevisions to process for release notes\n\n#### -c, --check\n\nchecks for validity of admonitions (if any)\n\n#### -l, --list\n\nlist the available admonitions with their title\n\n#### Uncategorized commands\n\n#### relink\n\nrecreates hardlinks between repository clones\n\n#### Commands\n\n#### Repository maintenance\n\n#### relink\n\nrecreate hardlinks between two repositories:\n\nhg relink [ORIGIN]\n\nWhen repositories are cloned locally, their data files will be hardlinked so that  they  only\nuse the space of a single repository.\n\nUnfortunately,  subsequent  pulls  into  either repository will break hardlinks for any files\ntouched by the new changesets, even if both repositories end up pulling the same changes.\n\nSimilarly, passing --rev to \"hg clone\" will fail to use any hardlinks, falling back to a com‐\nplete copy of the source repository.\n\nThis command lets you recreate those hardlinks and reclaim that wasted space.\n\nThis  repository will be relinked to share space with ORIGIN, which must be on the same local\ndisk. If ORIGIN is omitted, looks for \"default-relink\", then \"default\", in [paths].\n\nDo not attempt any read operations on this repository while the  command  is  running.  (Both\nrepositories will be locked against writes.)\n\n#### remotefilelog\n\nremotefilelog causes Mercurial to lazilly fetch file contents (EXPERIMENTAL)\n\nThis  extension is HIGHLY EXPERIMENTAL. There are NO BACKWARDS COMPATIBILITY GUARANTEES. This\nmeans that repositories created with this extension may only be usable with the exact version\nof this extension/Mercurial that was used. The extension attempts to enforce this in order to\nprevent repository corruption.\n\nremotefilelog works by fetching file contents lazily and storing  them  in  a  cache  on  the\nclient  rather  than  in  revlogs. This allows enormous histories to be transferred only par‐\ntially, making them easier to operate on.\n\nConfigs:\n\npacks.maxchainlen specifies the maximum delta chain length in pack files\n\npacks.maxpacksize specifies the maximum pack file size\n\npacks.maxpackfilecount specifies the maximum number of packs in the\n\nshared cache (trees only for now)\n\nremotefilelog.backgroundprefetch runs prefetch in background when True\n\nremotefilelog.bgprefetchrevs specifies revisions to fetch on commit and\n\nupdate, and on other commands that use them. Different from pullprefetch.\n\nremotefilelog.gcrepack does garbage collection during repack when True\n\nremotefilelog.nodettl specifies maximum TTL of a node in seconds before\n\nit is garbage collected\n\nremotefilelog.repackonhggc runs repack on hg gc when True\n\nremotefilelog.prefetchdays specifies the maximum age of a commit in\n\ndays after which it is no longer prefetched.\n\nremotefilelog.prefetchdelay specifies delay between background\n\nprefetches in seconds after operations that change the working copy parent\n\nremotefilelog.data.gencountlimit constraints the minimum number of data\n\npack files required to be considered part of a generation. In  particular,  minimum\nnumber of packs files > gencountlimit.\n\nremotefilelog.data.generations list for specifying the lower bound of\n\neach  generation  of  the  data  pack  files.  For example, list ['100MB','1MB'] or\n['1MB', '100MB'] will lead to three  generations:  [0,  1MB),  [  1MB,  100MB)  and\n[100MB, infinity).\n\nremotefilelog.data.maxrepackpacks the maximum number of pack files to\n\ninclude in an incremental data repack.\n\nremotefilelog.data.repackmaxpacksize the maximum size of a pack file for\n\nit to be considered for an incremental data repack.\n\nremotefilelog.data.repacksizelimit the maximum total size of pack files\n\nto include in an incremental data repack.\n\nremotefilelog.history.gencountlimit constraints the minimum number of\n\nhistory  pack  files required to be considered part of a generation. In particular,\nminimum number of packs files > gencountlimit.\n\nremotefilelog.history.generations list for specifying the lower bound of\n\neach generation of the history pack files. For example, list [ '100MB',  '1MB']  or\n['1MB',  '100MB']  will  lead  to  three  generations:  [ 0, 1MB), [1MB, 100MB) and\n[100MB, infinity).\n\nremotefilelog.history.maxrepackpacks the maximum number of pack files to\n\ninclude in an incremental history repack.\n\nremotefilelog.history.repackmaxpacksize the maximum size of a pack file\n\nfor it to be considered for an incremental history repack.\n\nremotefilelog.history.repacksizelimit the maximum total size of pack\n\nfiles to include in an incremental history repack.\n\nremotefilelog.backgroundrepack automatically consolidate packs in the\n\nbackground\n\nremotefilelog.cachepath path to cache\n\nremotefilelog.cachegroup if set, make cache directory sgid to this\n\ngroup\n\nremotefilelog.cacheprocess binary to invoke for fetching file data\n\nremotefilelog.debug turn on remotefilelog-specific debug output\n\nremotefilelog.excludepattern pattern of files to exclude from pulls\n\nremotefilelog.includepattern pattern of files to include in pulls\n\nremotefilelog.fetchwarning: message to print when too many\n\nsingle-file fetches occur\n\nremotefilelog.getfilesstep number of files to request in a single RPC\n\nremotefilelog.getfilestype if set to 'threaded' use threads to fetch\n\nfiles, otherwise use optimistic fetching\n\nremotefilelog.pullprefetch revset for selecting files that should be\n\neagerly downloaded rather than lazily\n\nremotefilelog.reponame name of the repo. If set, used to partition\n\ndata from other repos in a shared store.\n\nremotefilelog.server if true, enable server-side functionality\n\nremotefilelog.servercachepath path for caching blobs on the server\n\nremotefilelog.serverexpiration number of days to keep cached server\n\nblobs\n\nremotefilelog.validatecache if set, check cache entries for corruption\n\nbefore returning blobs\n\nremotefilelog.validatecachelog if set, check cache entries for\n\ncorruption before returning metadata\n\n#### Commands\n\n#### Repository maintenance\n\n#### prefetch\n\nprefetch file revisions from the server:\n\nhg prefetch [OPTIONS] [FILE...]\n\nPrefetchs file revisions for the specified revs and stores them in  the  local  remotefilelog\ncache.   If  no  rev  is specified, the default rev is used which is the union of dot, draft,\npullprefetch and bgprefetchrev.  File names or patterns can be used to limit which files  are\ndownloaded.\n\nReturn 0 on success.\n\nOptions:\n\n#### -r,\n\nprefetch the specified revisions\n\n#### --repack\n\nrun repack after prefetch\n\n#### -b,\n\nrev that is assumed to already be local\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n[+] marked option can be specified multiple times\n\n#### Uncategorized commands\n\ngc\ngarbage collect the client and server filelog caches:\n\nhg gc [REPO...]\n\ngarbage collect the client and server filelog caches\n\n#### repack\n\nhg repack [OPTIONS]\n\nOptions:\n\n#### --background\n\nrun in a background process\n\n#### --incremental\n\ndo an incremental repack\n\n#### --packsonly\n\nonly repack packs (skip loose objects)\n\n#### verifyremotefilelog\n\nhg verifyremotefilelogs <directory>\n\nOptions:\n\n#### -d, --decompress\n\ndecompress the filelogs first\n\n#### remotenames\n\nshowing remotebookmarks and remotebranches in UI (EXPERIMENTAL)\n\nBy  default both remotebookmarks and remotebranches are turned on. Config knob to control the\nindividually are as follows.\n\nConfig options to tweak the default behaviour:\n\n#### remotenames.bookmarks\n\nBoolean value to enable or disable showing of remotebookmarks (default: True)\n\n#### remotenames.branches\n\nBoolean value to enable or disable showing of remotebranches (default: True)\n\n#### remotenames.hoistedpeer\n\nName of the peer whose remotebookmarks should be hoisted into the top-level  namespace\n(default: 'default')\n\n#### schemes\n\nextend schemes with shortcuts to repository swarms\n\nThis  extension allows you to specify shortcuts for parent URLs with a lot of repositories to\nact like a scheme, for example:\n\n[schemes]\npy = http://code.python.org/hg/\n\nAfter that you can use it like:\n\nhg clone py://trunk/\n\nAdditionally there is support for some more complex schemas, for example used by Google Code:\n\n[schemes]\ngcode = http://{1}.googlecode.com/hg/\n\nThe syntax is taken from Mercurial templates, and you have  unlimited  number  of  variables,\nstarting  with  {1} and continuing with {2}, {3} and so on. This variables will receive parts\nof URL supplied, split by /. Anything not specified as {part} will be  just  appended  to  an\nURL.\n\nFor convenience, the extension adds these schemes by default:\n\n[schemes]\npy = http://hg.python.org/\nbb = https://bitbucket.org/\nbb+ssh = ssh://hg@bitbucket.org/\ngcode = https://{1}.googlecode.com/hg/\nkiln = https://{1}.kilnhg.com/Repo/\n\nYou can override a predefined scheme by defining a new scheme with the same name.\n\n#### Commands\n\n#### Uncategorized commands\n\n#### share\n\nshare a common history between several working directories\n\nThe share extension introduces a new command hg share to create a new working directory. This\nis similar to hg clone, but doesn't involve copying or linking the storage of the repository.\nThis  allows working on different branches or changes in parallel without the associated cost\nin terms of disk space.\n\nNote: destructive operations or extensions like hg rollback should be used with care as  they\ncan result in confusing problems.\n\n#### Automatic Pooled Storage for Clones\n\nWhen this extension is active, hg clone can be configured to automatically share/pool storage\nacross multiple clones. This mode effectively converts hg clone to hg clone + hg share.   The\nbenefit of using this mode is the automatic management of store paths and intelligent pooling\nof related repositories.\n\nThe following share. config options influence this feature:\n\n#### share.pool\n\nFilesystem path where shared repository data will be stored. When  defined,  hg  clone\nwill  automatically  use  shared repository storage instead of creating a store inside\neach clone.\n\n#### share.poolnaming\n\nHow directory names in share.pool are constructed.\n\n\"identity\" means the name is derived from the first changeset in  the  repository.  In\nthis  mode, different remotes share storage if their root/initial changeset is identi‐\ncal. In this mode, the local shared repository is an aggregate of all encountered  re‐\nmote repositories.\n\n\"remote\"  means  the name is derived from the source repository's path or URL. In this\nmode, storage is only shared if the path or URL  requested  in  the  hg  clone command\nmatches exactly to a repository that was cloned before.\n\nThe default naming mode is \"identity\".\n\nSharing requirements and configs of source repository with shares:\n\nBy  default  creating  a shared repository only enables sharing a common history and does not\nshare requirements and configs between them. This may lead to problems in some cases, for ex‐\nample  when  you upgrade the storage format from one repository but does not set related con‐\nfigs in the shares.\n\nSetting format.exp-share-safe = True enables sharing configs and requirements. This only  ap‐\nplies to shares which are done after enabling the config option.\n\nFor enabling this in existing shares, enable the config option and reshare.\n\nFor resharing existing shares, make sure your working directory is clean and there are no un‐\ntracked files, delete that share and create a new share.\n\n#### Commands\n\n#### Repository creation\n\n#### share\n\ncreate a new shared repository:\n\nhg share [-U] [-B] SOURCE [DEST]\n\nInitialize a new repository and working directory that shares  its  history  (and  optionally\nbookmarks) with another repository.\n\nNote   using  rollback or extensions that destroy/modify history (mq, rebase, etc.) can cause\nconsiderable confusion with shared clones. In particular, if  two  shared  clones  are\nboth updated to the same changeset, and one of them destroys that changeset with roll‐\nback, the other clone will suddenly  stop  working:  all  operations  will  fail  with\n\"abort: working directory has unknown parent\". The only known workaround is to use de‐\nbugsetparents on the broken clone to reset it to a changeset that still exists.\n\nOptions:\n\n#### -U, --noupdate\n\ndo not create a working directory\n\n#### -B, --bookmarks\n\nalso share bookmarks\n\n#### --relative\n\npoint to source using a relative path\n\n#### Repository maintenance\n\n#### unshare\n\nconvert a shared repository to a normal one:\n\nhg unshare\n\nCopy the store data to the repo and remove the sharedpath data.\n\n#### show\n\nunified command to show various repository information (EXPERIMENTAL)\n\nThis extension provides the hg show command, which provides a central command for  displaying\ncommonly-accessed repository data and views of that data.\n\nThe following config options can influence operation.\n\n#### commands\n\n#### show.aliasprefix\n\nList of strings that will register aliases for views. e.g. s will effectively set con‐\nfig options alias.s<view> = show <view> for all views. i.e. hg swork would execute  hg\nshow work.\n\nAliases that would conflict with existing registrations will not be performed.\n\n#### Commands\n\n#### Change navigation\n\n#### show\n\nshow various repository information:\n\nhg show VIEW\n\nA requested view of repository data is displayed.\n\nIf no view is requested, the list of available views is shown and the command aborts.\n\nNote   There are no backwards compatibility guarantees for the output of this command. Output\nmay change in any future Mercurial release.\n\nConsumers wanting stable command output should specify a template via -T/--template.\n\nList of available views:\n\nbookmarks   bookmarks and their associated changeset\n\nstack       current line of work\n\nwork        changesets that aren't finished\n\nOptions:\n\n#### -T,\n\ndisplay with template\n\n#### sparse\n\nallow sparse checkouts of the working directory (EXPERIMENTAL)\n\n(This extension is not yet protected by backwards compatibility guarantees.  Any  aspect  may\nbreak in future releases until this notice is removed.)\n\nThis  extension allows the working directory to only consist of a subset of files for the re‐\nvision. This allows specific files or directories to be explicitly included or excluded. Many\nrepository operations have performance proportional to the number of files in the working di‐\nrectory. So only realizing a subset of files in the working  directory  can  improve  perfor‐\nmance.\n\n#### Sparse Config Files\n\nThe  set of files that are part of a sparse checkout are defined by a sparse config file. The\nfile defines 3 things: includes (files to include in the sparse checkout), excludes (files to\nexclude from the sparse checkout), and profiles (links to other config files).\n\nThe file format is newline delimited. Empty lines and lines beginning with # are ignored.\n\nLines  beginning  with  %include `` denote another sparse config file to include. e.g. ``%in‐‐\nclude tests.sparse. The filename is relative to the repository root.\n\nThe special lines [include] and [exclude] denote the section for includes and  excludes  that\nfollow, respectively. It is illegal to have [include] after [exclude].\n\nNon-special lines resemble file patterns to be added to either includes or excludes. The syn‐\ntax of these lines is documented by hg help patterns.  Patterns are interpreted as  glob:  by\ndefault and match against the root of the repository.\n\nExclusion  patterns  take precedence over inclusion patterns. So even if a file is explicitly\nincluded, an [exclude] entry can remove it.\n\nFor example, say you have a repository with 3 directories, frontend/, backend/,  and  tools/.\nfrontend/  and backend/ correspond to different projects and it is uncommon for someone work‐\ning on one to need the files for the other. But tools/ contains  files  shared  between  both\nprojects. Your sparse config files may resemble:\n\n# frontend.sparse\nfrontend/\ntools/\n\n# backend.sparse\nbackend/\ntools/\n\nSay the backend grows in size. Or there's a directory with thousands of files you wish to ex‐\nclude. You can modify the profile to exclude certain files:\n\n[include]\nbackend/\ntools/\n\n[exclude]\ntools/tests/\n\n#### Commands\n\n#### Uncategorized commands\n\n#### split\n\ncommand to split a changeset into smaller ones (EXPERIMENTAL)\n\n#### Commands\n\n#### Change manipulation\n\n#### split\n\nsplit a changeset into smaller ones:\n\nhg split [--no-rebase] [[-r] REV]\n\nRepeatedly prompt changes and commit message for new changesets until there is  nothing  left\nin the original changeset.\n\nIf --rev was not given, split the working directory parent.\n\nBy  default,  rebase connected non-obsoleted descendants onto the new changeset. Use --no-re‐\nbase to avoid the rebase.\n\nOptions:\n\n#### -r,\n\nrevision to split\n\n#### --rebase\n\nrebase descendants after split (default: True)\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### sqlitestore\n\nstore repository data in SQLite (EXPERIMENTAL)\n\nThe sqlitestore extension enables the storage of repository data in SQLite.\n\nThis extension is HIGHLY EXPERIMENTAL. There are NO BACKWARDS COMPATIBILITY GUARANTEES.  This\nmeans that repositories created with this extension may only be usable with the exact version\nof this extension/Mercurial that was used. The extension attempts to enforce this in order to\nprevent repository corruption.\n\nIn addition, several features are not yet supported or have known bugs:\n\n• Only  some  data is stored in SQLite. Changeset, manifest, and other repository data is not\nyet stored in SQLite.\n\n• Transactions are not robust. If the process is aborted at the right time during transaction\nclose/rollback,  the repository could be in an inconsistent state. This problem will dimin‐\nish once all repository data is tracked by SQLite.\n\n• Bundle repositories do not work (the ability to use e.g.  hg -R <bundle-file> log to  auto‐\nmatically overlay a bundle on top of the existing repository).\n\n• Various other features don't work.\n\nThis  extension should work for basic clone/pull, update, and commit workflows.  Some history\nrewriting operations may fail due to lack of support for bundle repositories.\n\nTo use, activate the extension and set the storage.new-repo-backend config option  to  sqlite\nto enable new repositories to use SQLite for storage.\n\n#### strip\n\nstrip changesets and their descendants from history (DEPRECATED)\n\nThe  functionality  of  this extension has been included in core Mercurial since version 5.7.\nPlease use hg debugstrip ... instead.\n\nThis extension allows you to strip changesets and all their descendants from the  repository.\nSee the command help for details.\n\n#### transplant\n\ncommand to transplant changesets from another branch\n\nThis  extension  allows you to transplant changes to another parent revision, possibly in an‐\nother repository. The transplant is done using 'diff' patches.\n\nTransplanted patches are recorded in .hg/transplant/transplants, as a map  from  a  changeset\nhash to its hash in the source repository.\n\n#### Commands\n\n#### Change manipulation\n\n#### transplant\n\ntransplant changesets from another branch:\n\nhg transplant [-s REPO] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]...\n\nSelected  changesets  will be applied on top of the current working directory with the log of\nthe original changeset. The changesets are copied and will thus appear twice in  the  history\nwith different identities.\n\nConsider  using  the  graft command if everything is inside the same repository - it will use\nmerges and will usually give a better result.  Use the rebase extension if the changesets are\nunpublished and you want to move them instead of copying them.\n\nIf --log is specified, log messages will have a comment appended of the form:\n\n(transplanted from CHANGESETHASH)\n\nYou can rewrite the changelog message with the --filter option.  Its argument will be invoked\nwith the current changelog message as $1 and the patch as $2.\n\n--source/-s specifies another repository to use for selecting changesets, just as if it  tem‐\nporarily had been pulled.  If --branch/-b is specified, these revisions will be used as heads\nwhen deciding which changesets to transplant, just  as  if  only  these  revisions  had  been\npulled.   If --all/-a is specified, all the revisions up to the heads specified with --branch\nwill be transplanted.\n\nExample:\n\n• transplant all changes up to REV on top of your current revision:\n\nhg transplant --branch REV --all\n\nYou can optionally mark selected transplanted changesets as merge changesets. You will not be\nprompted to transplant any ancestors of a merged transplant, and you can merge descendants of\nthem normally instead of transplanting them.\n\nMerge changesets may be transplanted directly by specifying the proper  parent  changeset  by\ncalling hg transplant --parent.\n\nIf  no  merges  or  revisions are provided, hg transplant will start an interactive changeset\nbrowser.\n\nIf a changeset application fails, you can fix the merge by hand and  then  resume  where  you\nleft off by calling hg transplant --continue/-c.\n\nOptions:\n\n#### -s,\n\ntransplant changesets from REPO\n\n#### -b,\n\nuse this source changeset as head\n\n#### -a, --all\n\npull all changesets up to the --branch revisions\n\n#### -p,\n\nskip over REV\n\n#### -m,\n\nmerge at REV\n\n--parent <REV>\nparent to choose when transplanting merge\n\n#### -e, --edit\n\ninvoke editor on commit messages\n\n--log  append transplant info to log message\n\n--stop stop interrupted transplant\n\n#### -c, --continue\n\ncontinue last transplant session after fixing conflicts\n\n--filter <CMD>\nfilter changesets through command\n\n[+] marked option can be specified multiple times\n\n#### uncommit\n\nuncommit part or all of a local changeset (EXPERIMENTAL)\n\nThis  command  undoes the effect of a local commit, returning the affected files to their un‐\ncommitted state. This means that files modified, added or removed in the  changeset  will  be\nleft unchanged, and so will remain modified, added and removed in the working directory.\n\n#### Commands\n\n#### Change manipulation\n\n#### unamend\n\nundo the most recent amend operation on a current changeset:\n\nhg unamend\n\nThis command will roll back to the previous version of a changeset, leaving working directory\nin state in which it was before running hg amend (e.g. files modified as  part  of  an  amend\nwill be marked as modified hg status)\n\n#### uncommit\n\nuncommit part or all of a local changeset:\n\nhg uncommit [OPTION]... [FILE]...\n\nThis  command  undoes the effect of a local commit, returning the affected files to their un‐\ncommitted state. This means that files modified or deleted in the changeset will be left  un‐\nchanged, and so will remain modified in the working directory.\n\nIf no files are specified, the commit will be pruned, unless --keep is given.\n\nOptions:\n\n--keep allow an empty commit after uncommitting\n\n#### --allow-dirty-working-copy\n\nallow uncommit with outstanding changes\n\n#### -n,\n\nstore a note on uncommit\n\n#### -I,\n\ninclude names matching the given patterns\n\n#### -X,\n\nexclude names matching the given patterns\n\n#### -m,\n\nuse text as commit message\n\n#### -l,\n\nread commit message from file\n\n#### -d,\n\nrecord the specified date as commit date\n\n#### -u,\n\nrecord the specified user as committer\n\n#### -D, --currentdate\n\nrecord the current date as commit date\n\n#### -U, --currentuser\n\nrecord the current user as committer\n\n[+] marked option can be specified multiple times\n\n#### win32mbcs\n\nallow the use of MBCS paths with problematic encodings\n\nSome MBCS encodings are not good for some path operations (i.e.  splitting path, case conver‐\nsion, etc.) with its encoded bytes. We call such a encoding  (i.e.  shiftjis  and  big5)  as\n\"problematic  encoding\".  This extension can be used to fix the issue with those encodings by\nwrapping some functions to convert to Unicode string before path operation.\n\nThis extension is useful for:\n\n• Japanese Windows users using shiftjis encoding.\n\n• Chinese Windows users using big5 encoding.\n\n• All users who use a repository with one of problematic encodings on  case-insensitive  file\nsystem.\n\nThis extension is not needed for:\n\n• Any user who use only ASCII chars in path.\n\n• Any user who do not use any of problematic encodings.\n\nNote that there are some limitations on using this extension:\n\n• You should use single encoding in one repository.\n\n• If the repository path ends with 0x5c, .hg/hgrc cannot be read.\n\n• win32mbcs is not compatible with fixutf8 extension.\n\nBy  default,  win32mbcs uses encoding.encoding decided by Mercurial.  You can specify the en‐\ncoding by config option:\n\n[win32mbcs]\nencoding = sjis\n\nIt is useful for the users who want to commit with UTF-8 log message.\n\n#### win32text\n\nperform automatic newline conversion (DEPRECATED)\n\nDeprecation: The win32text extension requires each user to configure the  extension  again\nand again for each clone since the configuration is not copied when cloning.\n\nWe  have  therefore made the eol as an alternative. The eol uses a version controlled file\nfor its configuration and each clone will therefore use the right settings from the start.\n\nTo perform automatic newline conversion, use:\n\n[extensions]\nwin32text =\n[encode]\n= cleverencode:\n# or  = macencode:\n\n[decode]\n= cleverdecode:\n# or  = macdecode:\n\nIf not doing conversion, to make sure you do not commit CRLF/CR by accident:\n\n[hooks]\npretxncommit.crlf = python:hgext.win32text.forbidcrlf\n# or pretxncommit.cr = python:hgext.win32text.forbidcr\n\nTo do the same check on a server to prevent CRLF/CR from being pushed or pulled:\n\n[hooks]\npretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf\n# or pretxnchangegroup.cr = python:hgext.win32text.forbidcr\n\n#### zeroconf\n\ndiscover and advertise repositories on the local network\n\nThe zeroconf extension will advertise hg serve instances over DNS-SD so that they can be dis‐\ncovered using the hg paths command without knowing the server's IP address.\n\nTo allow other people to discover your repository using run hg serve in your repository:\n\n$ cd test\n$ hg serve\n\nYou can discover Zeroconf-enabled repositories by running hg paths:\n\n$ hg paths\nzc-test = http://example.com:8000/test\n\n### FILES\n\n#### /etc/mercurial/hgrc, $HOME/.hgrc, .hg/hgrc\n\nThis  file  contains  defaults and configuration. Values in .hg/hgrc override those in\n$HOME/.hgrc, and these override settings made in the global  /etc/mercurial/hgrc  con‐\nfiguration.  See hgrc(5) for details of the contents and format of these files.\n\n#### .hgignore\n\nThis  file  contains  regular expressions (one per line) that describe file names that\nshould be ignored by hg. For details, see hgignore(5).\n\n#### .hgsub\n\nThis file defines the locations of all subrepositories, and tells where the subreposi‐\ntory checkouts came from. For details, see hg help subrepos.\n\n#### .hgsubstate\n\nThis file is where Mercurial stores all nested repository states. NB: This file should\nnot be edited manually.\n\n#### .hgtags\n\nThis file contains changeset hash values and text tag names (one of each separated  by\nspaces)  that  correspond to tagged versions of the repository contents. The file con‐\ntent is encoded using UTF-8.\n\n#### .hg/last-message.txt\n\nThis file is used by hg commit to store a backup of the commit  message  in  case  the\ncommit fails.\n\n#### .hg/localtags\n\nThis  file  can  be used to define local tags which are not shared among repositories.\nThe file format is the same as for .hgtags, but it is encoded using the  local  system\nencoding.\n\nSome  commands  (e.g. revert) produce backup files ending in .orig, if the .orig file already\nexists and is not tracked by Mercurial, it will be overwritten.\n\n### BUGS\n\nProbably lots, please post them to the mailing list (see Resources below) when you find them.\n\n### SEE ALSO\n\nhgignore(5), hgrc(5)\n\n### AUTHOR\n\nOlivia Mackall <olivia@selenic.com>\n\nOrganization: Mercurial\n\n\n\n\nHG(1)\n\n### RESOURCES\n\nMain Web Site: https://mercurial-scm.org/\n\nSource code repository: https://www.mercurial-scm.org/repo/hg\n\nMailing list: https://www.mercurial-scm.org/mailman/listinfo/mercurial/\n\n### COPYING\n\nCopyright (C) 2005-2022 Olivia Mackall.  Free use of this software is granted under the terms\nof the GNU General Public License version 2 or any later version.\n\n"
        }
    ],
    "structuredContent": {
        "command": "HG",
        "section": "1",
        "mode": "man",
        "summary": "hg - Mercurial source code management system",
        "synopsis": "hg command [option]... [argument]...",
        "flags": [
            {
                "flag": "-R",
                "long": null,
                "arg": null,
                "description": "repository root directory or name of overlay bundle file --cwd <DIR> change working directory"
            },
            {
                "flag": "-y",
                "long": "--noninteractive",
                "arg": null,
                "description": "do not prompt, automatically pick the first choice for all prompts"
            },
            {
                "flag": "-q",
                "long": "--quiet",
                "arg": null,
                "description": "suppress output"
            },
            {
                "flag": "-v",
                "long": "--verbose",
                "arg": null,
                "description": "enable additional output --color <TYPE> when to colorize (boolean, always, auto, never, or debug) --config <CONFIG[+]> set/override config option (use 'section.name=value')"
            },
            {
                "flag": "",
                "long": "--debug",
                "arg": null,
                "description": "enable debugging output"
            },
            {
                "flag": "",
                "long": "--debugger",
                "arg": null,
                "description": "start debugger --encoding <ENCODE> set the charset encoding (default: UTF-8) --encodingmode <MODE> set the charset encoding mode (default: strict)"
            },
            {
                "flag": "",
                "long": "--traceback",
                "arg": null,
                "description": "always print a traceback on exception --time time how long the command takes"
            },
            {
                "flag": "",
                "long": "--profile",
                "arg": null,
                "description": "print command execution profile"
            },
            {
                "flag": "",
                "long": "--version",
                "arg": null,
                "description": "output version information and exit"
            },
            {
                "flag": "-h",
                "long": "--help",
                "arg": null,
                "description": "display help and exit"
            },
            {
                "flag": "",
                "long": "--hidden",
                "arg": null,
                "description": "consider hidden changesets --pager <TYPE> when to paginate (boolean, always, auto, or never) (default: auto) [+] marked option can be specified multiple times"
            }
        ],
        "examples": [],
        "see_also": [
            {
                "name": "hgignore",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/hgignore/5/json"
            },
            {
                "name": "hgrc",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/hgrc/5/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COMMAND ELEMENTS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "files...",
                        "lines": 5
                    },
                    {
                        "name": "revision",
                        "lines": 3
                    },
                    {
                        "name": "repository path",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "OPTIONS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "-R,",
                        "lines": 5,
                        "flag": "-R"
                    },
                    {
                        "name": "-y, --noninteractive",
                        "lines": 2,
                        "flag": "-y",
                        "long": "--noninteractive"
                    },
                    {
                        "name": "-q, --quiet",
                        "lines": 2,
                        "flag": "-q",
                        "long": "--quiet"
                    },
                    {
                        "name": "-v, --verbose",
                        "lines": 8,
                        "flag": "-v",
                        "long": "--verbose"
                    },
                    {
                        "name": "--debug",
                        "lines": 2,
                        "long": "--debug"
                    },
                    {
                        "name": "--debugger",
                        "lines": 8,
                        "long": "--debugger"
                    },
                    {
                        "name": "--traceback",
                        "lines": 4,
                        "long": "--traceback"
                    },
                    {
                        "name": "--profile",
                        "lines": 2,
                        "long": "--profile"
                    },
                    {
                        "name": "--version",
                        "lines": 2,
                        "long": "--version"
                    },
                    {
                        "name": "-h, --help",
                        "lines": 2,
                        "flag": "-h",
                        "long": "--help"
                    },
                    {
                        "name": "--hidden",
                        "lines": 7,
                        "long": "--hidden"
                    }
                ]
            },
            {
                "name": "COMMANDS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "Repository creation",
                        "lines": 1
                    },
                    {
                        "name": "clone",
                        "lines": 105
                    },
                    {
                        "name": "-U, --noupdate",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--noupdate"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-b,",
                        "lines": 4,
                        "flag": "-b"
                    },
                    {
                        "name": "--uncompressed",
                        "lines": 2,
                        "long": "--uncompressed"
                    },
                    {
                        "name": "--stream",
                        "lines": 2,
                        "long": "--stream"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "init",
                        "lines": 16
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 2,
                        "long": "--insecure"
                    },
                    {
                        "name": "Remote repository management",
                        "lines": 1
                    },
                    {
                        "name": "incoming",
                        "lines": 19
                    },
                    {
                        "name": "added",
                        "lines": 2
                    },
                    {
                        "name": "advanced",
                        "lines": 2
                    },
                    {
                        "name": "diverged",
                        "lines": 2
                    },
                    {
                        "name": "changed",
                        "lines": 27
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-n, --newest-first",
                        "lines": 5,
                        "flag": "-n",
                        "long": "--newest-first"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-B, --bookmarks",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--bookmarks"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-M, --no-merges",
                        "lines": 4,
                        "flag": "-M",
                        "long": "--no-merges"
                    },
                    {
                        "name": "-G, --graph",
                        "lines": 5,
                        "flag": "-G",
                        "long": "--graph"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 2,
                        "long": "--insecure"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 6,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "outgoing",
                        "lines": 20
                    },
                    {
                        "name": "added",
                        "lines": 2
                    },
                    {
                        "name": "deleted",
                        "lines": 2
                    },
                    {
                        "name": "advanced",
                        "lines": 2
                    },
                    {
                        "name": "diverged",
                        "lines": 2
                    },
                    {
                        "name": "changed",
                        "lines": 9
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-n, --newest-first",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--newest-first"
                    },
                    {
                        "name": "-B, --bookmarks",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--bookmarks"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-M, --no-merges",
                        "lines": 4,
                        "flag": "-M",
                        "long": "--no-merges"
                    },
                    {
                        "name": "-G, --graph",
                        "lines": 5,
                        "flag": "-G",
                        "long": "--graph"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 2,
                        "long": "--insecure"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 6,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "paths",
                        "lines": 30
                    },
                    {
                        "name": "pushurl",
                        "lines": 8
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "pull",
                        "lines": 31
                    },
                    {
                        "name": "-u, --update",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--update"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "--confirm",
                        "lines": 2,
                        "long": "--confirm"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-B,",
                        "lines": 2,
                        "flag": "-B"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "push",
                        "lines": 52
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-B,",
                        "lines": 2,
                        "flag": "-B"
                    },
                    {
                        "name": "--all-bookmarks",
                        "lines": 2,
                        "long": "--all-bookmarks"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "--new-branch",
                        "lines": 5,
                        "long": "--new-branch"
                    },
                    {
                        "name": "--publish",
                        "lines": 2,
                        "long": "--publish"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "serve",
                        "lines": 23
                    },
                    {
                        "name": "-A,",
                        "lines": 2,
                        "flag": "-A"
                    },
                    {
                        "name": "-d, --daemon",
                        "lines": 5,
                        "flag": "-d",
                        "long": "--daemon"
                    },
                    {
                        "name": "-E,",
                        "lines": 2,
                        "flag": "-E"
                    },
                    {
                        "name": "-p,",
                        "lines": 2,
                        "flag": "-p"
                    },
                    {
                        "name": "-a,",
                        "lines": 5,
                        "flag": "-a"
                    },
                    {
                        "name": "-n,",
                        "lines": 11,
                        "flag": "-n"
                    },
                    {
                        "name": "--stdio",
                        "lines": 5,
                        "long": "--stdio"
                    },
                    {
                        "name": "-t,",
                        "lines": 5,
                        "flag": "-t"
                    },
                    {
                        "name": "-6, --ipv6",
                        "lines": 5,
                        "flag": "-6",
                        "long": "--ipv6"
                    },
                    {
                        "name": "--print-url",
                        "lines": 2,
                        "long": "--print-url"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 4,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "Change creation",
                        "lines": 1
                    },
                    {
                        "name": "commit",
                        "lines": 50
                    },
                    {
                        "name": "-A, --addremove",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--addremove"
                    },
                    {
                        "name": "--close-branch",
                        "lines": 2,
                        "long": "--close-branch"
                    },
                    {
                        "name": "--amend",
                        "lines": 2,
                        "long": "--amend"
                    },
                    {
                        "name": "-s, --secret",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--secret"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "--force-close-branch",
                        "lines": 2,
                        "long": "--force-close-branch"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 6,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "abort",
                        "lines": 11
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "backout",
                        "lines": 44
                    },
                    {
                        "name": "--merge",
                        "lines": 2,
                        "long": "--merge"
                    },
                    {
                        "name": "--commit",
                        "lines": 2,
                        "long": "--commit"
                    },
                    {
                        "name": "--no-commit",
                        "lines": 5,
                        "long": "--no-commit"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 4,
                        "flag": "-u"
                    },
                    {
                        "name": "continue",
                        "lines": 11
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "graft",
                        "lines": 88
                    },
                    {
                        "name": "-r,",
                        "lines": 5,
                        "flag": "-r"
                    },
                    {
                        "name": "-c, --continue",
                        "lines": 4,
                        "flag": "-c",
                        "long": "--continue"
                    },
                    {
                        "name": "--abort",
                        "lines": 2,
                        "long": "--abort"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 4,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "--no-commit",
                        "lines": 2,
                        "long": "--no-commit"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-D, --currentdate",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--currentdate"
                    },
                    {
                        "name": "-U, --currentuser",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--currentuser"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 4,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "merge",
                        "lines": 27
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-P, --preview",
                        "lines": 2,
                        "flag": "-P",
                        "long": "--preview"
                    },
                    {
                        "name": "--abort",
                        "lines": 2,
                        "long": "--abort"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "Change organization",
                        "lines": 1
                    },
                    {
                        "name": "bookmarks",
                        "lines": 58
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-d, --delete",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--delete"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-i, --inactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--inactive"
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "branch",
                        "lines": 26
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-C, --clean",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--clean"
                    },
                    {
                        "name": "-r,",
                        "lines": 4,
                        "flag": "-r"
                    },
                    {
                        "name": "branches",
                        "lines": 18
                    },
                    {
                        "name": "current",
                        "lines": 6
                    },
                    {
                        "name": "-a, --active",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--active"
                    },
                    {
                        "name": "-c, --closed",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--closed"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "phase",
                        "lines": 20
                    },
                    {
                        "name": "-p, --public",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--public"
                    },
                    {
                        "name": "-d, --draft",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--draft"
                    },
                    {
                        "name": "-s, --secret",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--secret"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 4,
                        "flag": "-r"
                    },
                    {
                        "name": "tag",
                        "lines": 30
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-l, --local",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--local"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--remove",
                        "lines": 2,
                        "long": "--remove"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "tags",
                        "lines": 19
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "File content management",
                        "lines": 1
                    },
                    {
                        "name": "annotate",
                        "lines": 39
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--follow",
                        "lines": 2,
                        "long": "--follow"
                    },
                    {
                        "name": "--no-follow",
                        "lines": 2,
                        "long": "--no-follow"
                    },
                    {
                        "name": "-a, --text",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--text"
                    },
                    {
                        "name": "-u, --user",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--user"
                    },
                    {
                        "name": "-f, --file",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--file"
                    },
                    {
                        "name": "-d, --date",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--date"
                    },
                    {
                        "name": "-n, --number",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--number"
                    },
                    {
                        "name": "-c, --changeset",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--changeset"
                    },
                    {
                        "name": "-l, --line-number",
                        "lines": 5,
                        "flag": "-l",
                        "long": "--line-number"
                    },
                    {
                        "name": "-w, --ignore-all-space",
                        "lines": 2,
                        "flag": "-w",
                        "long": "--ignore-all-space"
                    },
                    {
                        "name": "-b, --ignore-space-change",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--ignore-space-change"
                    },
                    {
                        "name": "-B, --ignore-blank-lines",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--ignore-blank-lines"
                    },
                    {
                        "name": "-Z, --ignore-space-at-eol",
                        "lines": 2,
                        "flag": "-Z",
                        "long": "--ignore-space-at-eol"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-T,",
                        "lines": 6,
                        "flag": "-T"
                    },
                    {
                        "name": "cat",
                        "lines": 64
                    },
                    {
                        "name": "-o,",
                        "lines": 2,
                        "flag": "-o"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--decode",
                        "lines": 2,
                        "long": "--decode"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "copy",
                        "lines": 20
                    },
                    {
                        "name": "--forget",
                        "lines": 2,
                        "long": "--forget"
                    },
                    {
                        "name": "-A, --after",
                        "lines": 5,
                        "flag": "-A",
                        "long": "--after"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 6,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "diff",
                        "lines": 56
                    },
                    {
                        "name": "-r,",
                        "lines": 8,
                        "flag": "-r"
                    },
                    {
                        "name": "-c,",
                        "lines": 2,
                        "flag": "-c"
                    },
                    {
                        "name": "-a, --text",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--text"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "--binary",
                        "lines": 2,
                        "long": "--binary"
                    },
                    {
                        "name": "--nodates",
                        "lines": 2,
                        "long": "--nodates"
                    },
                    {
                        "name": "--noprefix",
                        "lines": 2,
                        "long": "--noprefix"
                    },
                    {
                        "name": "-p, --show-function",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--show-function"
                    },
                    {
                        "name": "--reverse",
                        "lines": 2,
                        "long": "--reverse"
                    },
                    {
                        "name": "-w, --ignore-all-space",
                        "lines": 2,
                        "flag": "-w",
                        "long": "--ignore-all-space"
                    },
                    {
                        "name": "-b, --ignore-space-change",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--ignore-space-change"
                    },
                    {
                        "name": "-B, --ignore-blank-lines",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--ignore-blank-lines"
                    },
                    {
                        "name": "-Z, --ignore-space-at-eol",
                        "lines": 2,
                        "flag": "-Z",
                        "long": "--ignore-space-at-eol"
                    },
                    {
                        "name": "-U,",
                        "lines": 7,
                        "flag": "-U"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 4,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "grep",
                        "lines": 37
                    },
                    {
                        "name": "matched",
                        "lines": 10
                    },
                    {
                        "name": "-0, --print0",
                        "lines": 6,
                        "flag": "-0",
                        "long": "--print0"
                    },
                    {
                        "name": "-a, --text",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--text"
                    },
                    {
                        "name": "-f, --follow",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--follow"
                    },
                    {
                        "name": "-i, --ignore-case",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--ignore-case"
                    },
                    {
                        "name": "-l, --files-with-matches",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--files-with-matches"
                    },
                    {
                        "name": "-n, --line-number",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--line-number"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--all-files",
                        "lines": 2,
                        "long": "--all-files"
                    },
                    {
                        "name": "-u, --user",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--user"
                    },
                    {
                        "name": "-d, --date",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--date"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "bisect",
                        "lines": 76
                    },
                    {
                        "name": "-r, --reset",
                        "lines": 2,
                        "flag": "-r",
                        "long": "--reset"
                    },
                    {
                        "name": "-g, --good",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--good"
                    },
                    {
                        "name": "-b, --bad",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--bad"
                    },
                    {
                        "name": "-s, --skip",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--skip"
                    },
                    {
                        "name": "-e, --extend",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--extend"
                    },
                    {
                        "name": "-c,",
                        "lines": 2,
                        "flag": "-c"
                    },
                    {
                        "name": "-U, --noupdate",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--noupdate"
                    },
                    {
                        "name": "heads",
                        "lines": 25
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-t, --topo",
                        "lines": 2,
                        "flag": "-t",
                        "long": "--topo"
                    },
                    {
                        "name": "-a, --active",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--active"
                    },
                    {
                        "name": "-c, --closed",
                        "lines": 5,
                        "flag": "-c",
                        "long": "--closed"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "identify",
                        "lines": 24
                    },
                    {
                        "name": "parents",
                        "lines": 23
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-n, --num",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--num"
                    },
                    {
                        "name": "-i, --id",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--id"
                    },
                    {
                        "name": "-b, --branch",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--branch"
                    },
                    {
                        "name": "-t, --tags",
                        "lines": 2,
                        "flag": "-t",
                        "long": "--tags"
                    },
                    {
                        "name": "-B, --bookmarks",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--bookmarks"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 2,
                        "long": "--insecure"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "log",
                        "lines": 107
                    },
                    {
                        "name": "-f, --follow",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--follow"
                    },
                    {
                        "name": "--follow-first",
                        "lines": 2,
                        "long": "--follow-first"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-C, --copies",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--copies"
                    },
                    {
                        "name": "-k,",
                        "lines": 2,
                        "flag": "-k"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-L,",
                        "lines": 2,
                        "flag": "-L"
                    },
                    {
                        "name": "--removed",
                        "lines": 2,
                        "long": "--removed"
                    },
                    {
                        "name": "-m, --only-merges",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--only-merges"
                    },
                    {
                        "name": "-u,",
                        "lines": 5,
                        "flag": "-u"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-B,",
                        "lines": 2,
                        "flag": "-B"
                    },
                    {
                        "name": "-P,",
                        "lines": 2,
                        "flag": "-P"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-M, --no-merges",
                        "lines": 4,
                        "flag": "-M",
                        "long": "--no-merges"
                    },
                    {
                        "name": "-G, --graph",
                        "lines": 5,
                        "flag": "-G",
                        "long": "--graph"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 6,
                        "flag": "-X"
                    },
                    {
                        "name": "parents",
                        "lines": 22
                    },
                    {
                        "name": "-r,",
                        "lines": 5,
                        "flag": "-r"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "tip",
                        "lines": 17
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 5,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "Working directory management",
                        "lines": 1
                    },
                    {
                        "name": "add",
                        "lines": 40
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 4,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "addremove",
                        "lines": 58
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 4,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "files",
                        "lines": 53
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-0, --print0",
                        "lines": 2,
                        "flag": "-0",
                        "long": "--print0"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 4,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "forget",
                        "lines": 27
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 4,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "locate",
                        "lines": 23
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-0, --print0",
                        "lines": 2,
                        "flag": "-0",
                        "long": "--print0"
                    },
                    {
                        "name": "-f, --fullpath",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--fullpath"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "purge",
                        "lines": 33
                    },
                    {
                        "name": "-a, --abort-on-err",
                        "lines": 4,
                        "flag": "-a",
                        "long": "--abort-on-err"
                    },
                    {
                        "name": "-i, --ignored",
                        "lines": 4,
                        "flag": "-i",
                        "long": "--ignored"
                    },
                    {
                        "name": "--files",
                        "lines": 2,
                        "long": "--files"
                    },
                    {
                        "name": "-p, --print",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--print"
                    },
                    {
                        "name": "-0, --print0",
                        "lines": 2,
                        "flag": "-0",
                        "long": "--print0"
                    },
                    {
                        "name": "--confirm",
                        "lines": 2,
                        "long": "--confirm"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 6,
                        "flag": "-X"
                    },
                    {
                        "name": "remove",
                        "lines": 37
                    },
                    {
                        "name": "-A, --after",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--after"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 6,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "rename",
                        "lines": 21
                    },
                    {
                        "name": "--forget",
                        "lines": 2,
                        "long": "--forget"
                    },
                    {
                        "name": "-A, --after",
                        "lines": 5,
                        "flag": "-A",
                        "long": "--after"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 6,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "resolve",
                        "lines": 36
                    },
                    {
                        "name": "mergestatus",
                        "lines": 8
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "-m, --mark",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--mark"
                    },
                    {
                        "name": "-u, --unmark",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--unmark"
                    },
                    {
                        "name": "-n, --no-status",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--no-status"
                    },
                    {
                        "name": "--re-merge",
                        "lines": 2,
                        "long": "--re-merge"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "revert",
                        "lines": 29
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-C, --no-backup",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--no-backup"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 4,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "root",
                        "lines": 13
                    },
                    {
                        "name": "storepath",
                        "lines": 6
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "shelve",
                        "lines": 31
                    },
                    {
                        "name": "-A, --addremove",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--addremove"
                    },
                    {
                        "name": "-u, --unknown",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--unknown"
                    },
                    {
                        "name": "--cleanup",
                        "lines": 5,
                        "long": "--cleanup"
                    },
                    {
                        "name": "-d, --delete",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--delete"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 3,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 5,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "status",
                        "lines": 86
                    },
                    {
                        "name": "-A, --all",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--all"
                    },
                    {
                        "name": "-m, --modified",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--modified"
                    },
                    {
                        "name": "-a, --added",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--added"
                    },
                    {
                        "name": "-r, --removed",
                        "lines": 2,
                        "flag": "-r",
                        "long": "--removed"
                    },
                    {
                        "name": "-d, --deleted",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--deleted"
                    },
                    {
                        "name": "-c, --clean",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--clean"
                    },
                    {
                        "name": "-u, --unknown",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--unknown"
                    },
                    {
                        "name": "-i, --ignored",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--ignored"
                    },
                    {
                        "name": "-n, --no-status",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--no-status"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-C, --copies",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--copies"
                    },
                    {
                        "name": "-0, --print0",
                        "lines": 8,
                        "flag": "-0",
                        "long": "--print0"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-T,",
                        "lines": 6,
                        "flag": "-T"
                    },
                    {
                        "name": "summary",
                        "lines": 14
                    },
                    {
                        "name": "--remote",
                        "lines": 4,
                        "long": "--remote"
                    },
                    {
                        "name": "unshelve",
                        "lines": 37
                    },
                    {
                        "name": "-a, --abort",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--abort"
                    },
                    {
                        "name": "-c, --continue",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--continue"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-t,",
                        "lines": 5,
                        "flag": "-t"
                    },
                    {
                        "name": "update",
                        "lines": 46
                    },
                    {
                        "name": "-C, --clean",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--clean"
                    },
                    {
                        "name": "-c, --check",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--check"
                    },
                    {
                        "name": "-m, --merge",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--merge"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-t,",
                        "lines": 4,
                        "flag": "-t"
                    },
                    {
                        "name": "Change import/export",
                        "lines": 1
                    },
                    {
                        "name": "archive",
                        "lines": 22
                    },
                    {
                        "name": "files",
                        "lines": 2
                    },
                    {
                        "name": "tar",
                        "lines": 2
                    },
                    {
                        "name": "tbz2",
                        "lines": 2
                    },
                    {
                        "name": "tgz",
                        "lines": 2
                    },
                    {
                        "name": "txz",
                        "lines": 2
                    },
                    {
                        "name": "uzip",
                        "lines": 2
                    },
                    {
                        "name": "zip",
                        "lines": 13
                    },
                    {
                        "name": "--no-decode",
                        "lines": 2,
                        "long": "--no-decode"
                    },
                    {
                        "name": "-p,",
                        "lines": 2,
                        "flag": "-p"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "bundle",
                        "lines": 27
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-b,",
                        "lines": 5,
                        "flag": "-b"
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "export",
                        "lines": 75
                    },
                    {
                        "name": "parents",
                        "lines": 20
                    },
                    {
                        "name": "-B,",
                        "lines": 2,
                        "flag": "-B"
                    },
                    {
                        "name": "-o,",
                        "lines": 2,
                        "flag": "-o"
                    },
                    {
                        "name": "--switch-parent",
                        "lines": 2,
                        "long": "--switch-parent"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-a, --text",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--text"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "--binary",
                        "lines": 2,
                        "long": "--binary"
                    },
                    {
                        "name": "--nodates",
                        "lines": 2,
                        "long": "--nodates"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "import",
                        "lines": 84
                    },
                    {
                        "name": "-p,",
                        "lines": 3,
                        "flag": "-p"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "--secret",
                        "lines": 2,
                        "long": "--secret"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "--no-commit",
                        "lines": 2,
                        "long": "--no-commit"
                    },
                    {
                        "name": "--bypass",
                        "lines": 2,
                        "long": "--bypass"
                    },
                    {
                        "name": "--partial",
                        "lines": 2,
                        "long": "--partial"
                    },
                    {
                        "name": "--exact",
                        "lines": 5,
                        "long": "--exact"
                    },
                    {
                        "name": "--import-branch",
                        "lines": 2,
                        "long": "--import-branch"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-s,",
                        "lines": 4,
                        "flag": "-s"
                    },
                    {
                        "name": "unbundle",
                        "lines": 10
                    },
                    {
                        "name": "-u, --update",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--update"
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "manifest",
                        "lines": 18
                    },
                    {
                        "name": "-r,",
                        "lines": 4,
                        "flag": "-r"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "recover",
                        "lines": 13
                    },
                    {
                        "name": "--verify",
                        "lines": 2,
                        "long": "--verify"
                    },
                    {
                        "name": "rollback",
                        "lines": 43
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "verify",
                        "lines": 19
                    },
                    {
                        "name": "Help",
                        "lines": 1
                    },
                    {
                        "name": "config",
                        "lines": 38
                    },
                    {
                        "name": "-u, --untrusted",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--untrusted"
                    },
                    {
                        "name": "--exp-all-known",
                        "lines": 2,
                        "long": "--exp-all-known"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-l, --local",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--local"
                    },
                    {
                        "name": "--source",
                        "lines": 2,
                        "long": "--source"
                    },
                    {
                        "name": "--shared",
                        "lines": 2,
                        "long": "--shared"
                    },
                    {
                        "name": "--non-shared",
                        "lines": 2,
                        "long": "--non-shared"
                    },
                    {
                        "name": "-g, --global",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--global"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "help",
                        "lines": 12
                    },
                    {
                        "name": "-e, --extension",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--extension"
                    },
                    {
                        "name": "-c, --command",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--command"
                    },
                    {
                        "name": "-k, --keyword",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keyword"
                    },
                    {
                        "name": "-s,",
                        "lines": 4,
                        "flag": "-s"
                    },
                    {
                        "name": "version",
                        "lines": 8
                    },
                    {
                        "name": "extensions",
                        "lines": 6
                    },
                    {
                        "name": "bundled",
                        "lines": 6
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    }
                ]
            },
            {
                "name": "BUNDLE FILE FORMATS",
                "lines": 12,
                "subsections": [
                    {
                        "name": "compression",
                        "lines": 2
                    },
                    {
                        "name": "parameters",
                        "lines": 6
                    },
                    {
                        "name": "<compression>-<type>",
                        "lines": 6
                    },
                    {
                        "name": "Available Types",
                        "lines": 23
                    },
                    {
                        "name": "Available Compression Engines",
                        "lines": 2
                    },
                    {
                        "name": "bzip2",
                        "lines": 10
                    },
                    {
                        "name": "gzip",
                        "lines": 5
                    },
                    {
                        "name": "none",
                        "lines": 4
                    },
                    {
                        "name": "Examples",
                        "lines": 4
                    },
                    {
                        "name": "none-v1",
                        "lines": 2
                    },
                    {
                        "name": "zstd-v2",
                        "lines": 2
                    },
                    {
                        "name": "zstd-v1",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "COLORIZING OUTPUTS",
                "lines": 23,
                "subsections": [
                    {
                        "name": "Mode",
                        "lines": 3
                    },
                    {
                        "name": "Effects",
                        "lines": 18
                    },
                    {
                        "name": "Labels",
                        "lines": 69
                    },
                    {
                        "name": "Custom colors",
                        "lines": 13
                    }
                ]
            },
            {
                "name": "DATE FORMATS",
                "lines": 58,
                "subsections": []
            },
            {
                "name": "DEPRECATED FEATURES",
                "lines": 4,
                "subsections": [
                    {
                        "name": "Commands",
                        "lines": 2
                    },
                    {
                        "name": "locate",
                        "lines": 2
                    },
                    {
                        "name": "parents",
                        "lines": 3
                    },
                    {
                        "name": "tip",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 1
                    },
                    {
                        "name": "web.allowpull",
                        "lines": 6
                    }
                ]
            },
            {
                "name": "DIFF FORMATS",
                "lines": 29,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT VARIABLES",
                "lines": 127,
                "subsections": [
                    {
                        "name": "SAFELY REWRITING HISTORY (EXPERIMENTAL)",
                        "lines": 20
                    },
                    {
                        "name": "Current feature status",
                        "lines": 2
                    },
                    {
                        "name": "Instability",
                        "lines": 25
                    }
                ]
            },
            {
                "name": "USING ADDITIONAL FEATURES",
                "lines": 110,
                "subsections": []
            },
            {
                "name": "SPECIFYING FILE SETS",
                "lines": 17,
                "subsections": [
                    {
                        "name": "Operators",
                        "lines": 2
                    },
                    {
                        "name": "not x",
                        "lines": 4
                    },
                    {
                        "name": "x and y",
                        "lines": 2
                    },
                    {
                        "name": "x or y",
                        "lines": 2
                    },
                    {
                        "name": "x - y",
                        "lines": 2
                    },
                    {
                        "name": "Predicates",
                        "lines": 2
                    },
                    {
                        "name": "added()",
                        "lines": 2
                    },
                    {
                        "name": "binary()",
                        "lines": 2
                    },
                    {
                        "name": "clean()",
                        "lines": 2
                    },
                    {
                        "name": "copied()",
                        "lines": 2
                    },
                    {
                        "name": "deleted()",
                        "lines": 2
                    },
                    {
                        "name": "encoding(name)",
                        "lines": 3
                    },
                    {
                        "name": "eol(style)",
                        "lines": 3
                    },
                    {
                        "name": "exec()",
                        "lines": 2
                    },
                    {
                        "name": "grep(regex)",
                        "lines": 2
                    },
                    {
                        "name": "hgignore()",
                        "lines": 2
                    },
                    {
                        "name": "ignored()",
                        "lines": 2
                    },
                    {
                        "name": "missing()",
                        "lines": 2
                    },
                    {
                        "name": "modified()",
                        "lines": 2
                    },
                    {
                        "name": "portable()",
                        "lines": 2
                    },
                    {
                        "name": "removed()",
                        "lines": 2
                    },
                    {
                        "name": "resolved()",
                        "lines": 2
                    },
                    {
                        "name": "revs(revs, pattern)",
                        "lines": 3
                    },
                    {
                        "name": "size(expression)",
                        "lines": 10
                    },
                    {
                        "name": "status(base, rev, pattern)",
                        "lines": 4
                    },
                    {
                        "name": "subrepo([pattern])",
                        "lines": 2
                    },
                    {
                        "name": "symlink()",
                        "lines": 2
                    },
                    {
                        "name": "tracked()",
                        "lines": 2
                    },
                    {
                        "name": "unknown()",
                        "lines": 2
                    },
                    {
                        "name": "unresolved()",
                        "lines": 2
                    },
                    {
                        "name": "Examples",
                        "lines": 30
                    }
                ]
            },
            {
                "name": "COMMAND-LINE FLAGS",
                "lines": 2,
                "subsections": [
                    {
                        "name": "Flag names",
                        "lines": 2
                    },
                    {
                        "name": "-v",
                        "lines": 15,
                        "flag": "-v"
                    },
                    {
                        "name": "Flag types",
                        "lines": 2
                    },
                    {
                        "name": "Specifying flag values",
                        "lines": 5
                    },
                    {
                        "name": "-ffoo",
                        "lines": 2
                    },
                    {
                        "name": "Specifying boolean flags",
                        "lines": 6
                    },
                    {
                        "name": "Specifying list flags",
                        "lines": 4
                    },
                    {
                        "name": "Setting flag defaults",
                        "lines": 7
                    },
                    {
                        "name": "Overriding flags on the command line",
                        "lines": 14
                    },
                    {
                        "name": "Overriding flag defaults",
                        "lines": 4
                    },
                    {
                        "name": "Hidden flags",
                        "lines": 6
                    }
                ]
            },
            {
                "name": "GLOSSARY",
                "lines": 1,
                "subsections": [
                    {
                        "name": "Ancestor",
                        "lines": 5
                    },
                    {
                        "name": "Bookmark",
                        "lines": 28
                    },
                    {
                        "name": "Branch, anonymous",
                        "lines": 3
                    },
                    {
                        "name": "Branch, closed",
                        "lines": 2
                    },
                    {
                        "name": "Branch, default",
                        "lines": 2
                    },
                    {
                        "name": "Branch head",
                        "lines": 2
                    },
                    {
                        "name": "Branch, inactive",
                        "lines": 8
                    },
                    {
                        "name": "Branch, named",
                        "lines": 12
                    },
                    {
                        "name": "Branch tip",
                        "lines": 2
                    },
                    {
                        "name": "Branch, topological",
                        "lines": 5
                    },
                    {
                        "name": "Changelog",
                        "lines": 4
                    },
                    {
                        "name": "Changeset",
                        "lines": 2
                    },
                    {
                        "name": "Changeset, child",
                        "lines": 3
                    },
                    {
                        "name": "Changeset id",
                        "lines": 3
                    },
                    {
                        "name": "Changeset, merge",
                        "lines": 2
                    },
                    {
                        "name": "Changeset, parent",
                        "lines": 4
                    },
                    {
                        "name": "Checkout",
                        "lines": 10
                    },
                    {
                        "name": "Child changeset",
                        "lines": 2
                    },
                    {
                        "name": "Close changeset",
                        "lines": 2
                    },
                    {
                        "name": "Closed branch",
                        "lines": 11
                    },
                    {
                        "name": "Closed branch head",
                        "lines": 20
                    },
                    {
                        "name": "Deprecated",
                        "lines": 2
                    },
                    {
                        "name": "Default branch",
                        "lines": 2
                    },
                    {
                        "name": "Descendant",
                        "lines": 17
                    },
                    {
                        "name": "Directory, working",
                        "lines": 10
                    },
                    {
                        "name": "Experimental",
                        "lines": 11
                    },
                    {
                        "name": "Head, branch",
                        "lines": 2
                    },
                    {
                        "name": "Head, closed branch",
                        "lines": 7
                    },
                    {
                        "name": "Head, repository",
                        "lines": 2
                    },
                    {
                        "name": "Head, topological",
                        "lines": 2
                    },
                    {
                        "name": "History, immutable",
                        "lines": 5
                    },
                    {
                        "name": "History, rewriting",
                        "lines": 3
                    },
                    {
                        "name": "Immutable history",
                        "lines": 2
                    },
                    {
                        "name": "Merge changeset",
                        "lines": 2
                    },
                    {
                        "name": "Manifest",
                        "lines": 8
                    },
                    {
                        "name": "Named branch",
                        "lines": 2
                    },
                    {
                        "name": "Null changeset",
                        "lines": 7
                    },
                    {
                        "name": "Parent changeset",
                        "lines": 2
                    },
                    {
                        "name": "Parent, working directory",
                        "lines": 29
                    },
                    {
                        "name": "Repository",
                        "lines": 5
                    },
                    {
                        "name": "Repository head",
                        "lines": 2
                    },
                    {
                        "name": "Revision",
                        "lines": 3
                    },
                    {
                        "name": "Revision number",
                        "lines": 9
                    },
                    {
                        "name": "Rewriting history",
                        "lines": 15
                    },
                    {
                        "name": "Tip, branch",
                        "lines": 14
                    },
                    {
                        "name": "Working directory",
                        "lines": 2
                    },
                    {
                        "name": "Working directory parent",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "SYNTAX FOR MERCURIAL IGNORE FILES",
                "lines": 1,
                "subsections": [
                    {
                        "name": "Synopsis",
                        "lines": 3
                    },
                    {
                        "name": "Description",
                        "lines": 24
                    },
                    {
                        "name": "Syntax",
                        "lines": 13
                    },
                    {
                        "name": "regexp",
                        "lines": 2
                    },
                    {
                        "name": "glob",
                        "lines": 2
                    },
                    {
                        "name": "rootglob",
                        "lines": 17
                    },
                    {
                        "name": "Example",
                        "lines": 13
                    },
                    {
                        "name": "Debugging",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "CONFIGURING HGWEB",
                "lines": 46,
                "subsections": [
                    {
                        "name": "URLs and Common Arguments",
                        "lines": 22
                    },
                    {
                        "name": "Commands and URLs",
                        "lines": 2
                    },
                    {
                        "name": "/annotate/{revision}/{path}",
                        "lines": 9
                    },
                    {
                        "name": "/archive/{revision}.{format}[/{path}]",
                        "lines": 12
                    },
                    {
                        "name": "/bookmarks",
                        "lines": 6
                    },
                    {
                        "name": "/branches",
                        "lines": 8
                    },
                    {
                        "name": "/changelog[/{revision}]",
                        "lines": 16
                    },
                    {
                        "name": "/changeset[/{revision}]",
                        "lines": 9
                    },
                    {
                        "name": "/comparison/{revision}/{path}",
                        "lines": 10
                    },
                    {
                        "name": "/diff/{revision}/{path}",
                        "lines": 7
                    },
                    {
                        "name": "/file/{revision}[/{path}]",
                        "lines": 11
                    },
                    {
                        "name": "/diff/{revision}/{path}",
                        "lines": 7
                    },
                    {
                        "name": "/filelog/{revision}/{path}",
                        "lines": 7
                    },
                    {
                        "name": "/graph[/{revision}]",
                        "lines": 17
                    },
                    {
                        "name": "/help[/{topic}]",
                        "lines": 8
                    },
                    {
                        "name": "/log[/{revision}[/{path}]]",
                        "lines": 9
                    },
                    {
                        "name": "/manifest[/{revision}[/{path}]]",
                        "lines": 10
                    },
                    {
                        "name": "/changeset[/{revision}]",
                        "lines": 9
                    },
                    {
                        "name": "/shortlog",
                        "lines": 5
                    },
                    {
                        "name": "/summary",
                        "lines": 7
                    },
                    {
                        "name": "/tags",
                        "lines": 6
                    }
                ]
            },
            {
                "name": "TECHNICAL IMPLEMENTATION TOPICS",
                "lines": 44,
                "subsections": []
            },
            {
                "name": "MERGE TOOLS",
                "lines": 15,
                "subsections": [
                    {
                        "name": "Available merge tools",
                        "lines": 11
                    },
                    {
                        "name": ":dump",
                        "lines": 10
                    },
                    {
                        "name": ":fail",
                        "lines": 5
                    },
                    {
                        "name": ":forcedump",
                        "lines": 4
                    },
                    {
                        "name": ":local",
                        "lines": 4
                    },
                    {
                        "name": ":merge",
                        "lines": 4
                    },
                    {
                        "name": ":merge-local",
                        "lines": 3
                    },
                    {
                        "name": ":merge-other",
                        "lines": 3
                    },
                    {
                        "name": ":merge3",
                        "lines": 5
                    },
                    {
                        "name": ":mergediff",
                        "lines": 5
                    },
                    {
                        "name": ":other",
                        "lines": 4
                    },
                    {
                        "name": ":prompt",
                        "lines": 5
                    },
                    {
                        "name": ":tagmerge",
                        "lines": 2
                    },
                    {
                        "name": ":union",
                        "lines": 7
                    },
                    {
                        "name": "Choosing a merge tool",
                        "lines": 67
                    }
                ]
            },
            {
                "name": "PAGER SUPPORT",
                "lines": 41,
                "subsections": []
            },
            {
                "name": "FILE NAME PATTERNS",
                "lines": 38,
                "subsections": [
                    {
                        "name": "-I -X",
                        "lines": 39,
                        "flag": "-X"
                    }
                ]
            },
            {
                "name": "WORKING WITH PHASES",
                "lines": 1,
                "subsections": [
                    {
                        "name": "What are phases?",
                        "lines": 16
                    },
                    {
                        "name": "How are phases managed?",
                        "lines": 12
                    },
                    {
                        "name": "Phases and servers",
                        "lines": 29
                    },
                    {
                        "name": "Examples",
                        "lines": 22
                    }
                ]
            },
            {
                "name": "SPECIFYING REVISIONS",
                "lines": 2,
                "subsections": [
                    {
                        "name": "Specifying single revisions",
                        "lines": 29
                    },
                    {
                        "name": "Specifying multiple revisions",
                        "lines": 13
                    },
                    {
                        "name": "Operators",
                        "lines": 2
                    },
                    {
                        "name": "not x",
                        "lines": 4
                    },
                    {
                        "name": "x::y",
                        "lines": 6
                    },
                    {
                        "name": "x:y",
                        "lines": 3
                    },
                    {
                        "name": "x and y",
                        "lines": 2
                    },
                    {
                        "name": "x or y",
                        "lines": 3
                    },
                    {
                        "name": "x - y",
                        "lines": 2
                    },
                    {
                        "name": "x % y",
                        "lines": 4
                    },
                    {
                        "name": "x^n",
                        "lines": 3
                    },
                    {
                        "name": "x~n",
                        "lines": 3
                    },
                    {
                        "name": "x ## y",
                        "lines": 19
                    },
                    {
                        "name": "Patterns",
                        "lines": 10
                    },
                    {
                        "name": "Predicates",
                        "lines": 2
                    },
                    {
                        "name": "adds(pattern)",
                        "lines": 5
                    },
                    {
                        "name": "all()",
                        "lines": 9
                    },
                    {
                        "name": "ancestors(set[, depth])",
                        "lines": 6
                    },
                    {
                        "name": "author(string)",
                        "lines": 2
                    },
                    {
                        "name": "bisect(string)",
                        "lines": 16
                    },
                    {
                        "name": "bookmark([name])",
                        "lines": 4
                    },
                    {
                        "name": "branch(string or set)",
                        "lines": 4
                    },
                    {
                        "name": "branchpoint()",
                        "lines": 2
                    },
                    {
                        "name": "bundle()",
                        "lines": 4
                    },
                    {
                        "name": "children(set)",
                        "lines": 2
                    },
                    {
                        "name": "closed()",
                        "lines": 2
                    },
                    {
                        "name": "commonancestors(set)",
                        "lines": 2
                    },
                    {
                        "name": "conflictlocal()",
                        "lines": 4
                    },
                    {
                        "name": "conflictother()",
                        "lines": 4
                    },
                    {
                        "name": "contains(pattern)",
                        "lines": 6
                    },
                    {
                        "name": "converted([id])",
                        "lines": 3
                    },
                    {
                        "name": "date(interval)",
                        "lines": 2
                    },
                    {
                        "name": "desc(string)",
                        "lines": 4
                    },
                    {
                        "name": "descendants(set[, depth])",
                        "lines": 6
                    },
                    {
                        "name": "destination([set])",
                        "lines": 4
                    },
                    {
                        "name": "diffcontains(pattern)",
                        "lines": 5
                    },
                    {
                        "name": "draft()",
                        "lines": 2
                    },
                    {
                        "name": "expectsize(set[, size])",
                        "lines": 6
                    },
                    {
                        "name": "extra(label, [value])",
                        "lines": 4
                    },
                    {
                        "name": "file(pattern)",
                        "lines": 6
                    },
                    {
                        "name": "filelog(pattern)",
                        "lines": 9
                    },
                    {
                        "name": "first(set, [n])",
                        "lines": 2
                    },
                    {
                        "name": "follow([file[, startrev]])",
                        "lines": 4
                    },
                    {
                        "name": "followlines(file, fromline:toline[, startrev=., descend=False])",
                        "lines": 8
                    },
                    {
                        "name": "grep(regex)",
                        "lines": 3
                    },
                    {
                        "name": "head()",
                        "lines": 2
                    },
                    {
                        "name": "heads(set)",
                        "lines": 2
                    },
                    {
                        "name": "hidden()",
                        "lines": 2
                    },
                    {
                        "name": "id(string)",
                        "lines": 2
                    },
                    {
                        "name": "keyword(string)",
                        "lines": 5
                    },
                    {
                        "name": "last(set, [n])",
                        "lines": 2
                    },
                    {
                        "name": "limit(set[, n[, offset]])",
                        "lines": 2
                    },
                    {
                        "name": "matching(revision [, field])",
                        "lines": 20
                    },
                    {
                        "name": "max(set)",
                        "lines": 2
                    },
                    {
                        "name": "merge()",
                        "lines": 2
                    },
                    {
                        "name": "min(set)",
                        "lines": 2
                    },
                    {
                        "name": "modifies(pattern)",
                        "lines": 5
                    },
                    {
                        "name": "named(namespace)",
                        "lines": 4
                    },
                    {
                        "name": "nodefromfile(path)",
                        "lines": 4
                    },
                    {
                        "name": "none()",
                        "lines": 2
                    },
                    {
                        "name": "only(set, [set])",
                        "lines": 4
                    },
                    {
                        "name": "origin([set])",
                        "lines": 5
                    },
                    {
                        "name": "outgoing([path])",
                        "lines": 6
                    },
                    {
                        "name": "p1([set])",
                        "lines": 2
                    },
                    {
                        "name": "p2([set])",
                        "lines": 2
                    },
                    {
                        "name": "parents([set])",
                        "lines": 2
                    },
                    {
                        "name": "present(set)",
                        "lines": 5
                    },
                    {
                        "name": "public()",
                        "lines": 2
                    },
                    {
                        "name": "remote([id [,path]])",
                        "lines": 3
                    },
                    {
                        "name": "removes(pattern)",
                        "lines": 5
                    },
                    {
                        "name": "rev(number)",
                        "lines": 2
                    },
                    {
                        "name": "reverse(set)",
                        "lines": 2
                    },
                    {
                        "name": "revset(set)",
                        "lines": 6
                    },
                    {
                        "name": "roots(set)",
                        "lines": 2
                    },
                    {
                        "name": "secret()",
                        "lines": 2
                    },
                    {
                        "name": "sort(set[, [-]key... [, ...]])",
                        "lines": 23
                    },
                    {
                        "name": "subrepo([pattern])",
                        "lines": 3
                    },
                    {
                        "name": "tag([name])",
                        "lines": 4
                    },
                    {
                        "name": "user(string)",
                        "lines": 4
                    },
                    {
                        "name": "Aliases",
                        "lines": 18
                    },
                    {
                        "name": "Equivalents",
                        "lines": 11
                    },
                    {
                        "name": "Examples",
                        "lines": 36
                    }
                ]
            },
            {
                "name": "RUST IN MERCURIAL",
                "lines": 2,
                "subsections": [
                    {
                        "name": "Compatibility",
                        "lines": 6
                    },
                    {
                        "name": "Features",
                        "lines": 15
                    },
                    {
                        "name": "Checking for Rust",
                        "lines": 8
                    },
                    {
                        "name": "Installing",
                        "lines": 2
                    },
                    {
                        "name": "Using pip",
                        "lines": 12
                    },
                    {
                        "name": "From your distribution",
                        "lines": 5
                    },
                    {
                        "name": "From source",
                        "lines": 7
                    },
                    {
                        "name": "rhg",
                        "lines": 7
                    },
                    {
                        "name": "Contributing",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "USING MERCURIAL FROM SCRIPTS AND AUTOMATION",
                "lines": 3,
                "subsections": [
                    {
                        "name": "Choosing an Interface",
                        "lines": 26
                    },
                    {
                        "name": "Environment Variables",
                        "lines": 37
                    },
                    {
                        "name": "Command-line Flags",
                        "lines": 21
                    },
                    {
                        "name": "Consuming Command Output",
                        "lines": 3
                    },
                    {
                        "name": "Parsing Raw Command Output",
                        "lines": 11
                    },
                    {
                        "name": "Using Templates to Control Output",
                        "lines": 26
                    },
                    {
                        "name": "Command Server Output",
                        "lines": 4
                    },
                    {
                        "name": "Output Verbosity",
                        "lines": 6
                    },
                    {
                        "name": "Other Topics",
                        "lines": 1
                    },
                    {
                        "name": "revsets",
                        "lines": 6
                    },
                    {
                        "name": "share extension",
                        "lines": 10
                    }
                ]
            },
            {
                "name": "SUBREPOSITORIES",
                "lines": 35,
                "subsections": [
                    {
                        "name": "Adding a Subrepository",
                        "lines": 5
                    },
                    {
                        "name": "Synchronizing a Subrepository",
                        "lines": 9
                    },
                    {
                        "name": "Deleting a Subrepository",
                        "lines": 3
                    },
                    {
                        "name": "Interaction with Mercurial Commands",
                        "lines": 4
                    },
                    {
                        "name": "addremove",
                        "lines": 5
                    },
                    {
                        "name": "archive",
                        "lines": 27
                    },
                    {
                        "name": "incoming",
                        "lines": 3
                    },
                    {
                        "name": "outgoing",
                        "lines": 28
                    },
                    {
                        "name": "Remapping Subrepositories Sources",
                        "lines": 5
                    }
                ]
            },
            {
                "name": "TEMPLATE USAGE",
                "lines": 17,
                "subsections": [
                    {
                        "name": "Keywords",
                        "lines": 10
                    },
                    {
                        "name": "activebookmark",
                        "lines": 6
                    },
                    {
                        "name": "bookmarks",
                        "lines": 5
                    },
                    {
                        "name": "changessincelatesttag",
                        "lines": 2
                    },
                    {
                        "name": "children",
                        "lines": 6
                    },
                    {
                        "name": "diffstat",
                        "lines": 22
                    },
                    {
                        "name": "graphnode",
                        "lines": 2
                    },
                    {
                        "name": "graphwidth",
                        "lines": 4
                    },
                    {
                        "name": "latesttag",
                        "lines": 3
                    },
                    {
                        "name": "latesttagdistance",
                        "lines": 2
                    },
                    {
                        "name": "namespaces",
                        "lines": 7
                    },
                    {
                        "name": "onelinesummary",
                        "lines": 9
                    },
                    {
                        "name": "parents",
                        "lines": 3
                    },
                    {
                        "name": "peerurls",
                        "lines": 5
                    },
                    {
                        "name": "reporoot",
                        "lines": 4
                    },
                    {
                        "name": "subrepos",
                        "lines": 4
                    },
                    {
                        "name": "termwidth",
                        "lines": 4
                    },
                    {
                        "name": "verbosity",
                        "lines": 11
                    },
                    {
                        "name": "Filters",
                        "lines": 2
                    },
                    {
                        "name": "addbreaks",
                        "lines": 5
                    },
                    {
                        "name": "basename",
                        "lines": 6
                    },
                    {
                        "name": "commondir",
                        "lines": 12
                    },
                    {
                        "name": "dirname",
                        "lines": 9
                    },
                    {
                        "name": "emailuser",
                        "lines": 9
                    },
                    {
                        "name": "firstline",
                        "lines": 8
                    },
                    {
                        "name": "isodate",
                        "lines": 2
                    },
                    {
                        "name": "isodatesec",
                        "lines": 7
                    },
                    {
                        "name": "nonempty",
                        "lines": 2
                    },
                    {
                        "name": "obfuscate",
                        "lines": 4
                    },
                    {
                        "name": "revescape",
                        "lines": 4
                    },
                    {
                        "name": "rfc3339date",
                        "lines": 3
                    },
                    {
                        "name": "rfc822date",
                        "lines": 6
                    },
                    {
                        "name": "shortbisect",
                        "lines": 4
                    },
                    {
                        "name": "shortdate",
                        "lines": 2
                    },
                    {
                        "name": "slashpath",
                        "lines": 2
                    },
                    {
                        "name": "splitlines",
                        "lines": 2
                    },
                    {
                        "name": "stringify",
                        "lines": 3
                    },
                    {
                        "name": "stripdir",
                        "lines": 3
                    },
                    {
                        "name": "tabindent",
                        "lines": 5
                    },
                    {
                        "name": "urlescape",
                        "lines": 10
                    },
                    {
                        "name": "Functions",
                        "lines": 2
                    },
                    {
                        "name": "config(section, name[, default])",
                        "lines": 2
                    },
                    {
                        "name": "configbool(section, name[, default])",
                        "lines": 2
                    },
                    {
                        "name": "configint(section, name[, default])",
                        "lines": 2
                    },
                    {
                        "name": "date(date[, fmt])",
                        "lines": 3
                    },
                    {
                        "name": "dict([[key=]value...])",
                        "lines": 3
                    },
                    {
                        "name": "diff([includepattern [, excludepattern]])",
                        "lines": 2
                    },
                    {
                        "name": "files(pattern)",
                        "lines": 2
                    },
                    {
                        "name": "fill(text[, width[, initialident[, hangindent]]])",
                        "lines": 2
                    },
                    {
                        "name": "filter(iterable[, expr])",
                        "lines": 3
                    },
                    {
                        "name": "get(dict, key)",
                        "lines": 3
                    },
                    {
                        "name": "if(expr, then[, else])",
                        "lines": 2
                    },
                    {
                        "name": "ifcontains(needle, haystack, then[, else])",
                        "lines": 2
                    },
                    {
                        "name": "ifeq(expr1, expr2, then[, else])",
                        "lines": 2
                    },
                    {
                        "name": "indent(text, indentchars[, firstline])",
                        "lines": 3
                    },
                    {
                        "name": "join(list, sep)",
                        "lines": 2
                    },
                    {
                        "name": "label(label, expr)",
                        "lines": 3
                    },
                    {
                        "name": "latesttag([pattern])",
                        "lines": 4
                    },
                    {
                        "name": "localdate(date[, tz])",
                        "lines": 2
                    },
                    {
                        "name": "mailmap(author)",
                        "lines": 2
                    },
                    {
                        "name": "max(iterable)",
                        "lines": 2
                    },
                    {
                        "name": "min(iterable)",
                        "lines": 2
                    },
                    {
                        "name": "mod(a, b)",
                        "lines": 2
                    },
                    {
                        "name": "pad(text, width[, fillchar=' '[, left=False[, truncate=False]]])",
                        "lines": 2
                    },
                    {
                        "name": "relpath(path)",
                        "lines": 3
                    },
                    {
                        "name": "revset(query[, formatargs...])",
                        "lines": 2
                    },
                    {
                        "name": "rstdoc(text, style)",
                        "lines": 2
                    },
                    {
                        "name": "search(pattern, text)",
                        "lines": 3
                    },
                    {
                        "name": "separate(sep, args...)",
                        "lines": 2
                    },
                    {
                        "name": "shortest(node, minlength=4)",
                        "lines": 2
                    },
                    {
                        "name": "startswith(pattern, text)",
                        "lines": 3
                    },
                    {
                        "name": "strip(text[, chars])",
                        "lines": 3
                    },
                    {
                        "name": "sub(pattern, replacement, expression)",
                        "lines": 2
                    },
                    {
                        "name": "subsetparents(rev, revset)",
                        "lines": 2
                    },
                    {
                        "name": "word(number, text[, separator])",
                        "lines": 2
                    },
                    {
                        "name": "Operators",
                        "lines": 23
                    },
                    {
                        "name": "Aliases",
                        "lines": 44
                    },
                    {
                        "name": "Examples",
                        "lines": 79
                    }
                ]
            },
            {
                "name": "URL PATHS",
                "lines": 55,
                "subsections": [
                    {
                        "name": "default:",
                        "lines": 4
                    },
                    {
                        "name": "default-push:",
                        "lines": 12
                    }
                ]
            },
            {
                "name": "EXTENSIONS",
                "lines": 3,
                "subsections": [
                    {
                        "name": "absorb",
                        "lines": 18
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change creation",
                        "lines": 1
                    },
                    {
                        "name": "absorb",
                        "lines": 23
                    },
                    {
                        "name": "-a, --apply-changes",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--apply-changes"
                    },
                    {
                        "name": "-p, --print-changes",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--print-changes"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-e, --edit-lines",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit-lines"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 5,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "acl",
                        "lines": 25
                    },
                    {
                        "name": "Branch-based Access Control",
                        "lines": 15
                    },
                    {
                        "name": "Path-based Access Control",
                        "lines": 4
                    },
                    {
                        "name": "Bookmark-based Access Control",
                        "lines": 19
                    },
                    {
                        "name": "Groups",
                        "lines": 7
                    },
                    {
                        "name": "Example Configuration",
                        "lines": 76
                    },
                    {
                        "name": "Examples using the ! prefix",
                        "lines": 33
                    },
                    {
                        "name": "amend",
                        "lines": 5
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change creation",
                        "lines": 1
                    },
                    {
                        "name": "amend",
                        "lines": 11
                    },
                    {
                        "name": "-A, --addremove",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--addremove"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "--close-branch",
                        "lines": 2,
                        "long": "--close-branch"
                    },
                    {
                        "name": "-s, --secret",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--secret"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-D, --currentdate",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--currentdate"
                    },
                    {
                        "name": "-U, --currentuser",
                        "lines": 4,
                        "flag": "-U",
                        "long": "--currentuser"
                    },
                    {
                        "name": "automv",
                        "lines": 9
                    },
                    {
                        "name": "beautifygraph",
                        "lines": 4
                    },
                    {
                        "name": "blackbox",
                        "lines": 33
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "blackbox",
                        "lines": 8
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "bookflow",
                        "lines": 26
                    },
                    {
                        "name": "bugzilla",
                        "lines": 46
                    },
                    {
                        "name": "bugzilla.version",
                        "lines": 26
                    },
                    {
                        "name": "bugzilla.regexp",
                        "lines": 9
                    },
                    {
                        "name": "bugzilla.fixregexp",
                        "lines": 9
                    },
                    {
                        "name": "bugzilla.fixstatus",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.fixresolution",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.style",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.template",
                        "lines": 22
                    },
                    {
                        "name": "bugzilla.strip",
                        "lines": 5
                    },
                    {
                        "name": "web.baseurl",
                        "lines": 4
                    },
                    {
                        "name": "bugzilla.usermap",
                        "lines": 13
                    },
                    {
                        "name": "bugzilla.bzurl",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.user",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.password",
                        "lines": 4
                    },
                    {
                        "name": "bugzilla.apikey",
                        "lines": 5
                    },
                    {
                        "name": "bugzilla.bzemail",
                        "lines": 7
                    },
                    {
                        "name": "bugzilla.host",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.db",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.user",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.password",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.timeout",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.bzuser",
                        "lines": 3
                    },
                    {
                        "name": "bugzilla.bzdir",
                        "lines": 2
                    },
                    {
                        "name": "bugzilla.notify",
                        "lines": 86
                    },
                    {
                        "name": "censor",
                        "lines": 21
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "censor",
                        "lines": 4
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "children",
                        "lines": 4
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "children",
                        "lines": 18
                    },
                    {
                        "name": "-r,",
                        "lines": 5,
                        "flag": "-r"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "churn",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "churn",
                        "lines": 38
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-f,",
                        "lines": 2,
                        "flag": "-f"
                    },
                    {
                        "name": "-c, --changesets",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--changesets"
                    },
                    {
                        "name": "-s, --sort",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--sort"
                    },
                    {
                        "name": "--diffstat",
                        "lines": 5,
                        "long": "--diffstat"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "clonebundles",
                        "lines": 88
                    },
                    {
                        "name": "sions.",
                        "lines": 94
                    },
                    {
                        "name": "closehead",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "close-head",
                        "lines": 11
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-r,",
                        "lines": 6,
                        "flag": "-r"
                    },
                    {
                        "name": "commitextras",
                        "lines": 2
                    },
                    {
                        "name": "convert",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "convert",
                        "lines": 34
                    },
                    {
                        "name": "-hg",
                        "lines": 3
                    },
                    {
                        "name": "--branchsort",
                        "lines": 3,
                        "long": "--branchsort"
                    },
                    {
                        "name": "--datesort",
                        "lines": 3,
                        "long": "--datesort"
                    },
                    {
                        "name": "--sourcesort",
                        "lines": 2,
                        "long": "--sourcesort"
                    },
                    {
                        "name": "--closesort",
                        "lines": 71,
                        "long": "--closesort"
                    },
                    {
                        "name": "Mercurial Source",
                        "lines": 3
                    },
                    {
                        "name": "convert.hg.ignoreerrors",
                        "lines": 3
                    },
                    {
                        "name": "convert.hg.saverev",
                        "lines": 3
                    },
                    {
                        "name": "convert.hg.startrev",
                        "lines": 2
                    },
                    {
                        "name": "convert.hg.revs",
                        "lines": 2
                    },
                    {
                        "name": "Bazaar Source",
                        "lines": 2
                    },
                    {
                        "name": "convert.bzr.saverev",
                        "lines": 3
                    },
                    {
                        "name": "CVS Source",
                        "lines": 9
                    },
                    {
                        "name": "convert.cvsps.cache",
                        "lines": 3
                    },
                    {
                        "name": "convert.cvsps.fuzz",
                        "lines": 4
                    },
                    {
                        "name": "convert.cvsps.logencoding",
                        "lines": 5
                    },
                    {
                        "name": "convert.cvsps.mergeto",
                        "lines": 5
                    },
                    {
                        "name": "convert.cvsps.mergefrom",
                        "lines": 5
                    },
                    {
                        "name": "convert.localtimezone",
                        "lines": 3
                    },
                    {
                        "name": "hooks.cvslog",
                        "lines": 4
                    },
                    {
                        "name": "hooks.cvschangesets",
                        "lines": 8
                    },
                    {
                        "name": "Subversion Source",
                        "lines": 10
                    },
                    {
                        "name": "convert.svn.branches",
                        "lines": 2
                    },
                    {
                        "name": "convert.svn.tags",
                        "lines": 2
                    },
                    {
                        "name": "convert.svn.trunk",
                        "lines": 2
                    },
                    {
                        "name": "convert.localtimezone",
                        "lines": 6
                    },
                    {
                        "name": "convert.svn.startrev",
                        "lines": 2
                    },
                    {
                        "name": "Git Source",
                        "lines": 7
                    },
                    {
                        "name": "convert.git.similarity",
                        "lines": 5
                    },
                    {
                        "name": "convert.git.findcopiesharder",
                        "lines": 4
                    },
                    {
                        "name": "convert.git.renamelimit",
                        "lines": 5
                    },
                    {
                        "name": "convert.git.committeractions",
                        "lines": 26
                    },
                    {
                        "name": "convert.git.extrakeys",
                        "lines": 5
                    },
                    {
                        "name": "convert.git.remoteprefix",
                        "lines": 3
                    },
                    {
                        "name": "convert.git.saverev",
                        "lines": 3
                    },
                    {
                        "name": "convert.git.skipsubmodules",
                        "lines": 3
                    },
                    {
                        "name": "Perforce Source",
                        "lines": 7
                    },
                    {
                        "name": "convert.p4.encoding",
                        "lines": 3
                    },
                    {
                        "name": "convert.p4.startrev",
                        "lines": 2
                    },
                    {
                        "name": "Mercurial Destination",
                        "lines": 16
                    },
                    {
                        "name": "convert.hg.clonebranches",
                        "lines": 2
                    },
                    {
                        "name": "convert.hg.tagsbranch",
                        "lines": 2
                    },
                    {
                        "name": "convert.hg.usebranchnames",
                        "lines": 2
                    },
                    {
                        "name": "convert.hg.sourcename",
                        "lines": 3
                    },
                    {
                        "name": "convert.hg.preserve-hash",
                        "lines": 4
                    },
                    {
                        "name": "All Destinations",
                        "lines": 2
                    },
                    {
                        "name": "convert.skiptags",
                        "lines": 2
                    },
                    {
                        "name": "Subversion Destination",
                        "lines": 2
                    },
                    {
                        "name": "convert.svn.dangerous-set-commit-dates",
                        "lines": 14
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-A,",
                        "lines": 13,
                        "flag": "-A"
                    },
                    {
                        "name": "--branchsort",
                        "lines": 2,
                        "long": "--branchsort"
                    },
                    {
                        "name": "--datesort",
                        "lines": 2,
                        "long": "--datesort"
                    },
                    {
                        "name": "--sourcesort",
                        "lines": 2,
                        "long": "--sourcesort"
                    },
                    {
                        "name": "--closesort",
                        "lines": 4,
                        "long": "--closesort"
                    },
                    {
                        "name": "eol",
                        "lines": 72
                    },
                    {
                        "name": "extdiff",
                        "lines": 67
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "File content management",
                        "lines": 1
                    },
                    {
                        "name": "extdiff",
                        "lines": 26
                    },
                    {
                        "name": "-p,",
                        "lines": 2,
                        "flag": "-p"
                    },
                    {
                        "name": "-o,",
                        "lines": 2,
                        "flag": "-o"
                    },
                    {
                        "name": "-r,",
                        "lines": 8,
                        "flag": "-r"
                    },
                    {
                        "name": "-c,",
                        "lines": 2,
                        "flag": "-c"
                    },
                    {
                        "name": "--per-file",
                        "lines": 2,
                        "long": "--per-file"
                    },
                    {
                        "name": "--confirm",
                        "lines": 2,
                        "long": "--confirm"
                    },
                    {
                        "name": "--patch",
                        "lines": 2,
                        "long": "--patch"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 4,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "factotum",
                        "lines": 26
                    },
                    {
                        "name": "fastannotate",
                        "lines": 75
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "fastexport",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change import/export",
                        "lines": 1
                    },
                    {
                        "name": "fastexport",
                        "lines": 10
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-i,",
                        "lines": 2,
                        "flag": "-i"
                    },
                    {
                        "name": "-e,",
                        "lines": 2,
                        "flag": "-e"
                    },
                    {
                        "name": "-A,",
                        "lines": 4,
                        "flag": "-A"
                    },
                    {
                        "name": "fetch",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Remote repository management",
                        "lines": 1
                    },
                    {
                        "name": "fetch",
                        "lines": 21
                    },
                    {
                        "name": "-r,",
                        "lines": 4,
                        "flag": "-r"
                    },
                    {
                        "name": "--force-editor",
                        "lines": 2,
                        "long": "--force-editor"
                    },
                    {
                        "name": "--switch-parent",
                        "lines": 2,
                        "long": "--switch-parent"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "fix",
                        "lines": 110
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "File content management",
                        "lines": 1
                    },
                    {
                        "name": "fix",
                        "lines": 30
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "-w, --working-dir",
                        "lines": 2,
                        "flag": "-w",
                        "long": "--working-dir"
                    },
                    {
                        "name": "--whole",
                        "lines": 4,
                        "long": "--whole"
                    },
                    {
                        "name": "fsmonitor",
                        "lines": 60
                    },
                    {
                        "name": "git",
                        "lines": 5
                    },
                    {
                        "name": "githelp",
                        "lines": 8
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Help",
                        "lines": 1
                    },
                    {
                        "name": "githelp",
                        "lines": 8
                    },
                    {
                        "name": "gpg",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Signing changes (GPG)",
                        "lines": 1
                    },
                    {
                        "name": "sigcheck",
                        "lines": 6
                    },
                    {
                        "name": "sign",
                        "lines": 14
                    },
                    {
                        "name": "-l, --local",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--local"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "--no-commit",
                        "lines": 2,
                        "long": "--no-commit"
                    },
                    {
                        "name": "-k,",
                        "lines": 2,
                        "flag": "-k"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "sigs",
                        "lines": 6
                    },
                    {
                        "name": "graphlog",
                        "lines": 8
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "glog",
                        "lines": 12
                    },
                    {
                        "name": "-f, --follow",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--follow"
                    },
                    {
                        "name": "--follow-first",
                        "lines": 2,
                        "long": "--follow-first"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-C, --copies",
                        "lines": 2,
                        "flag": "-C",
                        "long": "--copies"
                    },
                    {
                        "name": "-k,",
                        "lines": 2,
                        "flag": "-k"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--removed",
                        "lines": 2,
                        "long": "--removed"
                    },
                    {
                        "name": "-m, --only-merges",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--only-merges"
                    },
                    {
                        "name": "-u,",
                        "lines": 5,
                        "flag": "-u"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-P,",
                        "lines": 2,
                        "flag": "-P"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-M, --no-merges",
                        "lines": 4,
                        "flag": "-M",
                        "long": "--no-merges"
                    },
                    {
                        "name": "-G, --graph",
                        "lines": 5,
                        "flag": "-G",
                        "long": "--graph"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "hgk",
                        "lines": 25
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "view",
                        "lines": 8
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "highlight",
                        "lines": 16
                    },
                    {
                        "name": "histedit",
                        "lines": 133
                    },
                    {
                        "name": "Config",
                        "lines": 35
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "histedit",
                        "lines": 90
                    },
                    {
                        "name": "-c, --continue",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--continue"
                    },
                    {
                        "name": "--edit-plan",
                        "lines": 2,
                        "long": "--edit-plan"
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "--abort",
                        "lines": 2,
                        "long": "--abort"
                    },
                    {
                        "name": "-o, --outgoing",
                        "lines": 2,
                        "flag": "-o",
                        "long": "--outgoing"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-T,",
                        "lines": 4,
                        "flag": "-T"
                    },
                    {
                        "name": "hooklib",
                        "lines": 12
                    },
                    {
                        "name": "infinitepush",
                        "lines": 58
                    },
                    {
                        "name": "journal",
                        "lines": 5
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change organization",
                        "lines": 1
                    },
                    {
                        "name": "journal",
                        "lines": 25
                    },
                    {
                        "name": "-c, --commits",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--commits"
                    },
                    {
                        "name": "-p, --patch",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--patch"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-l,",
                        "lines": 7,
                        "flag": "-l"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "keyword",
                        "lines": 33
                    },
                    {
                        "name": "utcdate",
                        "lines": 2
                    },
                    {
                        "name": "svnutcdate",
                        "lines": 2
                    },
                    {
                        "name": "svnisodate",
                        "lines": 15
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "kwdemo",
                        "lines": 15
                    },
                    {
                        "name": "-d, --default",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--default"
                    },
                    {
                        "name": "-f,",
                        "lines": 2,
                        "flag": "-f"
                    },
                    {
                        "name": "kwexpand",
                        "lines": 10
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "kwfiles",
                        "lines": 21
                    },
                    {
                        "name": "-A, --all",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--all"
                    },
                    {
                        "name": "-i, --ignore",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--ignore"
                    },
                    {
                        "name": "-u, --unknown",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--unknown"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "kwshrink",
                        "lines": 10
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "largefiles",
                        "lines": 82
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "lfconvert",
                        "lines": 19
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "--to-normal",
                        "lines": 2,
                        "long": "--to-normal"
                    },
                    {
                        "name": "lfpull",
                        "lines": 22
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "lfs",
                        "lines": 101
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "logtoprocess",
                        "lines": 77
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository creation",
                        "lines": 1
                    },
                    {
                        "name": "qclone",
                        "lines": 21
                    },
                    {
                        "name": "-U, --noupdate",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--noupdate"
                    },
                    {
                        "name": "--uncompressed",
                        "lines": 2,
                        "long": "--uncompressed"
                    },
                    {
                        "name": "-p,",
                        "lines": 2,
                        "flag": "-p"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 2,
                        "long": "--insecure"
                    },
                    {
                        "name": "qinit",
                        "lines": 14
                    },
                    {
                        "name": "-c, --create-repo",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--create-repo"
                    },
                    {
                        "name": "Change creation",
                        "lines": 1
                    },
                    {
                        "name": "qcommit",
                        "lines": 8
                    },
                    {
                        "name": "-A, --addremove",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--addremove"
                    },
                    {
                        "name": "--close-branch",
                        "lines": 2,
                        "long": "--close-branch"
                    },
                    {
                        "name": "--amend",
                        "lines": 2,
                        "long": "--amend"
                    },
                    {
                        "name": "-s, --secret",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--secret"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "--force-close-branch",
                        "lines": 2,
                        "long": "--force-close-branch"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 6,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "qnew",
                        "lines": 23
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-U, --currentuser",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--currentuser"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-D, --currentdate",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--currentdate"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 4,
                        "flag": "-l"
                    },
                    {
                        "name": "qrefresh",
                        "lines": 22
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-s, --short",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--short"
                    },
                    {
                        "name": "-U, --currentuser",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--currentuser"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-D, --currentdate",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--currentdate"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 4,
                        "flag": "-l"
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "qfold",
                        "lines": 16
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "Change organization",
                        "lines": 1
                    },
                    {
                        "name": "qapplied",
                        "lines": 8
                    },
                    {
                        "name": "-1, --last",
                        "lines": 2,
                        "flag": "-1",
                        "long": "--last"
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "qdelete",
                        "lines": 11
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "-r,",
                        "lines": 6,
                        "flag": "-r"
                    },
                    {
                        "name": "qfinish",
                        "lines": 18
                    },
                    {
                        "name": "-a, --applied",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--applied"
                    },
                    {
                        "name": "qgoto",
                        "lines": 8
                    },
                    {
                        "name": "--keep-changes",
                        "lines": 2,
                        "long": "--keep-changes"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "--no-backup",
                        "lines": 2,
                        "long": "--no-backup"
                    },
                    {
                        "name": "qguard",
                        "lines": 22
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "-n, --none",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--none"
                    },
                    {
                        "name": "qheader",
                        "lines": 6
                    },
                    {
                        "name": "qnext",
                        "lines": 8
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "qpop",
                        "lines": 15
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "--keep-changes",
                        "lines": 2,
                        "long": "--keep-changes"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "--no-backup",
                        "lines": 2,
                        "long": "--no-backup"
                    },
                    {
                        "name": "qprev",
                        "lines": 8
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "qpush",
                        "lines": 12
                    },
                    {
                        "name": "--keep-changes",
                        "lines": 2,
                        "long": "--keep-changes"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-e, --exact",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--exact"
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-m, --merge",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--merge"
                    },
                    {
                        "name": "-n,",
                        "lines": 4,
                        "flag": "-n"
                    },
                    {
                        "name": "--no-backup",
                        "lines": 2,
                        "long": "--no-backup"
                    },
                    {
                        "name": "qqueue",
                        "lines": 21
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "--active",
                        "lines": 2,
                        "long": "--active"
                    },
                    {
                        "name": "-c, --create",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--create"
                    },
                    {
                        "name": "--rename",
                        "lines": 2,
                        "long": "--rename"
                    },
                    {
                        "name": "--delete",
                        "lines": 2,
                        "long": "--delete"
                    },
                    {
                        "name": "--purge",
                        "lines": 2,
                        "long": "--purge"
                    },
                    {
                        "name": "qrename",
                        "lines": 11
                    },
                    {
                        "name": "qrestore",
                        "lines": 8
                    },
                    {
                        "name": "-d, --delete",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--delete"
                    },
                    {
                        "name": "-u, --update",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--update"
                    },
                    {
                        "name": "qsave",
                        "lines": 8
                    },
                    {
                        "name": "-c, --copy",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--copy"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-e, --empty",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--empty"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "qselect",
                        "lines": 33
                    },
                    {
                        "name": "-n, --none",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--none"
                    },
                    {
                        "name": "-s, --series",
                        "lines": 4,
                        "flag": "-s",
                        "long": "--series"
                    },
                    {
                        "name": "--reapply",
                        "lines": 2,
                        "long": "--reapply"
                    },
                    {
                        "name": "qseries",
                        "lines": 8
                    },
                    {
                        "name": "-m, --missing",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--missing"
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "qtop",
                        "lines": 8
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "qunapplied",
                        "lines": 8
                    },
                    {
                        "name": "-1, --first",
                        "lines": 2,
                        "flag": "-1",
                        "long": "--first"
                    },
                    {
                        "name": "-s, --summary",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--summary"
                    },
                    {
                        "name": "File content management",
                        "lines": 1
                    },
                    {
                        "name": "qdiff",
                        "lines": 16
                    },
                    {
                        "name": "-a, --text",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--text"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "--binary",
                        "lines": 2,
                        "long": "--binary"
                    },
                    {
                        "name": "--nodates",
                        "lines": 2,
                        "long": "--nodates"
                    },
                    {
                        "name": "--noprefix",
                        "lines": 2,
                        "long": "--noprefix"
                    },
                    {
                        "name": "-p, --show-function",
                        "lines": 2,
                        "flag": "-p",
                        "long": "--show-function"
                    },
                    {
                        "name": "--reverse",
                        "lines": 2,
                        "long": "--reverse"
                    },
                    {
                        "name": "-w, --ignore-all-space",
                        "lines": 2,
                        "flag": "-w",
                        "long": "--ignore-all-space"
                    },
                    {
                        "name": "-b, --ignore-space-change",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--ignore-space-change"
                    },
                    {
                        "name": "-B, --ignore-blank-lines",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--ignore-blank-lines"
                    },
                    {
                        "name": "-Z, --ignore-space-at-eol",
                        "lines": 2,
                        "flag": "-Z",
                        "long": "--ignore-space-at-eol"
                    },
                    {
                        "name": "-U,",
                        "lines": 7,
                        "flag": "-U"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "Change import/export",
                        "lines": 1
                    },
                    {
                        "name": "qimport",
                        "lines": 31
                    },
                    {
                        "name": "-e, --existing",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--existing"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-f, --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "-P, --push",
                        "lines": 4,
                        "flag": "-P",
                        "long": "--push"
                    },
                    {
                        "name": "narrow",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "tracked",
                        "lines": 37
                    },
                    {
                        "name": "--auto-remove-includes",
                        "lines": 11,
                        "long": "--auto-remove-includes"
                    },
                    {
                        "name": "--clear",
                        "lines": 2,
                        "long": "--clear"
                    },
                    {
                        "name": "--force-delete-local-changes",
                        "lines": 2,
                        "long": "--force-delete-local-changes"
                    },
                    {
                        "name": "--backup",
                        "lines": 2,
                        "long": "--backup"
                    },
                    {
                        "name": "--update-working-copy",
                        "lines": 2,
                        "long": "--update-working-copy"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "notify",
                        "lines": 50
                    },
                    {
                        "name": "notify.test",
                        "lines": 2
                    },
                    {
                        "name": "notify.sources",
                        "lines": 25
                    },
                    {
                        "name": "notify.strip",
                        "lines": 5
                    },
                    {
                        "name": "notify.domain",
                        "lines": 3
                    },
                    {
                        "name": "notify.messageidseed",
                        "lines": 3
                    },
                    {
                        "name": "notify.style",
                        "lines": 2
                    },
                    {
                        "name": "notify.template",
                        "lines": 2
                    },
                    {
                        "name": "notify.incoming",
                        "lines": 2
                    },
                    {
                        "name": "notify.outgoing",
                        "lines": 2
                    },
                    {
                        "name": "notify.changegroup",
                        "lines": 2
                    },
                    {
                        "name": "notify.maxdiff",
                        "lines": 3
                    },
                    {
                        "name": "notify.maxdiffstat",
                        "lines": 3
                    },
                    {
                        "name": "notify.maxsubject",
                        "lines": 2
                    },
                    {
                        "name": "notify.diffstat",
                        "lines": 2
                    },
                    {
                        "name": "notify.showfunc",
                        "lines": 2
                    },
                    {
                        "name": "notify.merge",
                        "lines": 2
                    },
                    {
                        "name": "notify.mbox",
                        "lines": 2
                    },
                    {
                        "name": "notify.fromauthor",
                        "lines": 4
                    },
                    {
                        "name": "notify.reply-to-predecessor (EXPERIMENTAL)",
                        "lines": 9
                    },
                    {
                        "name": "email.from",
                        "lines": 2
                    },
                    {
                        "name": "web.baseurl",
                        "lines": 3
                    },
                    {
                        "name": "pager",
                        "lines": 8
                    },
                    {
                        "name": "patchbomb",
                        "lines": 62
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change import/export",
                        "lines": 1
                    },
                    {
                        "name": "email",
                        "lines": 78
                    },
                    {
                        "name": "-g, --git",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--git"
                    },
                    {
                        "name": "--plain",
                        "lines": 2,
                        "long": "--plain"
                    },
                    {
                        "name": "-o, --outgoing",
                        "lines": 2,
                        "flag": "-o",
                        "long": "--outgoing"
                    },
                    {
                        "name": "-b, --bundle",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--bundle"
                    },
                    {
                        "name": "-B,",
                        "lines": 5,
                        "flag": "-B"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--force",
                        "lines": 5,
                        "long": "--force"
                    },
                    {
                        "name": "--intro",
                        "lines": 4,
                        "long": "--intro"
                    },
                    {
                        "name": "-a, --attach",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--attach"
                    },
                    {
                        "name": "-i, --inline",
                        "lines": 5,
                        "flag": "-i",
                        "long": "--inline"
                    },
                    {
                        "name": "-c,",
                        "lines": 2,
                        "flag": "-c"
                    },
                    {
                        "name": "--confirm",
                        "lines": 2,
                        "long": "--confirm"
                    },
                    {
                        "name": "-d, --diffstat",
                        "lines": 8,
                        "flag": "-d",
                        "long": "--diffstat"
                    },
                    {
                        "name": "-f,",
                        "lines": 2,
                        "flag": "-f"
                    },
                    {
                        "name": "-n, --test",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--test"
                    },
                    {
                        "name": "-m,",
                        "lines": 5,
                        "flag": "-m"
                    },
                    {
                        "name": "-s,",
                        "lines": 8,
                        "flag": "-s"
                    },
                    {
                        "name": "-t,",
                        "lines": 2,
                        "flag": "-t"
                    },
                    {
                        "name": "-e,",
                        "lines": 5,
                        "flag": "-e"
                    },
                    {
                        "name": "--insecure",
                        "lines": 4,
                        "long": "--insecure"
                    },
                    {
                        "name": "phabricator",
                        "lines": 50
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change import/export",
                        "lines": 1
                    },
                    {
                        "name": "phabimport",
                        "lines": 10
                    },
                    {
                        "name": "--stack",
                        "lines": 6,
                        "long": "--stack"
                    },
                    {
                        "name": "phabread",
                        "lines": 22
                    },
                    {
                        "name": "--stack",
                        "lines": 6,
                        "long": "--stack"
                    },
                    {
                        "name": "phabsend",
                        "lines": 31
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--amend",
                        "lines": 8,
                        "long": "--amend"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "--confirm",
                        "lines": 10,
                        "long": "--confirm"
                    },
                    {
                        "name": "phabupdate",
                        "lines": 8
                    },
                    {
                        "name": "--accept",
                        "lines": 2,
                        "long": "--accept"
                    },
                    {
                        "name": "--reject",
                        "lines": 2,
                        "long": "--reject"
                    },
                    {
                        "name": "--request-review",
                        "lines": 2,
                        "long": "--request-review"
                    },
                    {
                        "name": "--abandon",
                        "lines": 2,
                        "long": "--abandon"
                    },
                    {
                        "name": "--reclaim",
                        "lines": 2,
                        "long": "--reclaim"
                    },
                    {
                        "name": "--close",
                        "lines": 2,
                        "long": "--close"
                    },
                    {
                        "name": "--reopen",
                        "lines": 2,
                        "long": "--reopen"
                    },
                    {
                        "name": "--plan-changes",
                        "lines": 2,
                        "long": "--plan-changes"
                    },
                    {
                        "name": "--resign",
                        "lines": 2,
                        "long": "--resign"
                    },
                    {
                        "name": "--commandeer",
                        "lines": 2,
                        "long": "--commandeer"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-r,",
                        "lines": 6,
                        "flag": "-r"
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "purge",
                        "lines": 6
                    },
                    {
                        "name": "rebase",
                        "lines": 6
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "rebase",
                        "lines": 109
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "--collapse",
                        "lines": 2,
                        "long": "--collapse"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-k, --keep",
                        "lines": 2,
                        "flag": "-k",
                        "long": "--keep"
                    },
                    {
                        "name": "--keepbranches",
                        "lines": 2,
                        "long": "--keepbranches"
                    },
                    {
                        "name": "-D, --detach",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--detach"
                    },
                    {
                        "name": "-i, --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-t,",
                        "lines": 4,
                        "flag": "-t"
                    },
                    {
                        "name": "-c, --continue",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--continue"
                    },
                    {
                        "name": "-a, --abort",
                        "lines": 5,
                        "flag": "-a",
                        "long": "--abort"
                    },
                    {
                        "name": "-n, --dry-run",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--dry-run"
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "--confirm",
                        "lines": 4,
                        "long": "--confirm"
                    },
                    {
                        "name": "record",
                        "lines": 5
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change creation",
                        "lines": 1
                    },
                    {
                        "name": "qrecord",
                        "lines": 6
                    },
                    {
                        "name": "record",
                        "lines": 30
                    },
                    {
                        "name": "-A, --addremove",
                        "lines": 2,
                        "flag": "-A",
                        "long": "--addremove"
                    },
                    {
                        "name": "--close-branch",
                        "lines": 2,
                        "long": "--close-branch"
                    },
                    {
                        "name": "--amend",
                        "lines": 2,
                        "long": "--amend"
                    },
                    {
                        "name": "-s, --secret",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--secret"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 2,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "--force-close-branch",
                        "lines": 2,
                        "long": "--force-close-branch"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-S, --subrepos",
                        "lines": 2,
                        "flag": "-S",
                        "long": "--subrepos"
                    },
                    {
                        "name": "-w, --ignore-all-space",
                        "lines": 2,
                        "flag": "-w",
                        "long": "--ignore-all-space"
                    },
                    {
                        "name": "-b, --ignore-space-change",
                        "lines": 2,
                        "flag": "-b",
                        "long": "--ignore-space-change"
                    },
                    {
                        "name": "-B, --ignore-blank-lines",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--ignore-blank-lines"
                    },
                    {
                        "name": "-Z, --ignore-space-at-eol",
                        "lines": 4,
                        "flag": "-Z",
                        "long": "--ignore-space-at-eol"
                    },
                    {
                        "name": "releasenotes",
                        "lines": 6
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "releasenotes",
                        "lines": 83
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "-c, --check",
                        "lines": 2,
                        "flag": "-c",
                        "long": "--check"
                    },
                    {
                        "name": "-l, --list",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--list"
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "relink",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "relink",
                        "lines": 21
                    },
                    {
                        "name": "remotefilelog",
                        "lines": 141
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "prefetch",
                        "lines": 13
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--repack",
                        "lines": 2,
                        "long": "--repack"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 4,
                        "flag": "-X"
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 7
                    },
                    {
                        "name": "repack",
                        "lines": 4
                    },
                    {
                        "name": "--background",
                        "lines": 2,
                        "long": "--background"
                    },
                    {
                        "name": "--incremental",
                        "lines": 2,
                        "long": "--incremental"
                    },
                    {
                        "name": "--packsonly",
                        "lines": 2,
                        "long": "--packsonly"
                    },
                    {
                        "name": "verifyremotefilelog",
                        "lines": 4
                    },
                    {
                        "name": "-d, --decompress",
                        "lines": 2,
                        "flag": "-d",
                        "long": "--decompress"
                    },
                    {
                        "name": "remotenames",
                        "lines": 7
                    },
                    {
                        "name": "remotenames.bookmarks",
                        "lines": 2
                    },
                    {
                        "name": "remotenames.branches",
                        "lines": 2
                    },
                    {
                        "name": "remotenames.hoistedpeer",
                        "lines": 3
                    },
                    {
                        "name": "schemes",
                        "lines": 33
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "share",
                        "lines": 10
                    },
                    {
                        "name": "Automatic Pooled Storage for Clones",
                        "lines": 7
                    },
                    {
                        "name": "share.pool",
                        "lines": 4
                    },
                    {
                        "name": "share.poolnaming",
                        "lines": 28
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Repository creation",
                        "lines": 1
                    },
                    {
                        "name": "share",
                        "lines": 16
                    },
                    {
                        "name": "-U, --noupdate",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--noupdate"
                    },
                    {
                        "name": "-B, --bookmarks",
                        "lines": 2,
                        "flag": "-B",
                        "long": "--bookmarks"
                    },
                    {
                        "name": "--relative",
                        "lines": 2,
                        "long": "--relative"
                    },
                    {
                        "name": "Repository maintenance",
                        "lines": 1
                    },
                    {
                        "name": "unshare",
                        "lines": 6
                    },
                    {
                        "name": "show",
                        "lines": 7
                    },
                    {
                        "name": "commands",
                        "lines": 1
                    },
                    {
                        "name": "show.aliasprefix",
                        "lines": 6
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change navigation",
                        "lines": 1
                    },
                    {
                        "name": "show",
                        "lines": 23
                    },
                    {
                        "name": "-T,",
                        "lines": 2,
                        "flag": "-T"
                    },
                    {
                        "name": "sparse",
                        "lines": 11
                    },
                    {
                        "name": "Sparse Config Files",
                        "lines": 42
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Uncategorized commands",
                        "lines": 1
                    },
                    {
                        "name": "split",
                        "lines": 2
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "split",
                        "lines": 14
                    },
                    {
                        "name": "-r,",
                        "lines": 2,
                        "flag": "-r"
                    },
                    {
                        "name": "--rebase",
                        "lines": 2,
                        "long": "--rebase"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "sqlitestore",
                        "lines": 29
                    },
                    {
                        "name": "strip",
                        "lines": 8
                    },
                    {
                        "name": "transplant",
                        "lines": 8
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "transplant",
                        "lines": 46
                    },
                    {
                        "name": "-s,",
                        "lines": 2,
                        "flag": "-s"
                    },
                    {
                        "name": "-b,",
                        "lines": 2,
                        "flag": "-b"
                    },
                    {
                        "name": "-a, --all",
                        "lines": 2,
                        "flag": "-a",
                        "long": "--all"
                    },
                    {
                        "name": "-p,",
                        "lines": 2,
                        "flag": "-p"
                    },
                    {
                        "name": "-m,",
                        "lines": 5,
                        "flag": "-m"
                    },
                    {
                        "name": "-e, --edit",
                        "lines": 6,
                        "flag": "-e",
                        "long": "--edit"
                    },
                    {
                        "name": "-c, --continue",
                        "lines": 7,
                        "flag": "-c",
                        "long": "--continue"
                    },
                    {
                        "name": "uncommit",
                        "lines": 6
                    },
                    {
                        "name": "Commands",
                        "lines": 1
                    },
                    {
                        "name": "Change manipulation",
                        "lines": 1
                    },
                    {
                        "name": "unamend",
                        "lines": 8
                    },
                    {
                        "name": "uncommit",
                        "lines": 14
                    },
                    {
                        "name": "--allow-dirty-working-copy",
                        "lines": 2,
                        "long": "--allow-dirty-working-copy"
                    },
                    {
                        "name": "-n,",
                        "lines": 2,
                        "flag": "-n"
                    },
                    {
                        "name": "-I,",
                        "lines": 2,
                        "flag": "-I"
                    },
                    {
                        "name": "-X,",
                        "lines": 2,
                        "flag": "-X"
                    },
                    {
                        "name": "-m,",
                        "lines": 2,
                        "flag": "-m"
                    },
                    {
                        "name": "-l,",
                        "lines": 2,
                        "flag": "-l"
                    },
                    {
                        "name": "-d,",
                        "lines": 2,
                        "flag": "-d"
                    },
                    {
                        "name": "-u,",
                        "lines": 2,
                        "flag": "-u"
                    },
                    {
                        "name": "-D, --currentdate",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--currentdate"
                    },
                    {
                        "name": "-U, --currentuser",
                        "lines": 4,
                        "flag": "-U",
                        "long": "--currentuser"
                    },
                    {
                        "name": "win32mbcs",
                        "lines": 38
                    },
                    {
                        "name": "win32text",
                        "lines": 32
                    },
                    {
                        "name": "zeroconf",
                        "lines": 15
                    }
                ]
            },
            {
                "name": "FILES",
                "lines": 1,
                "subsections": [
                    {
                        "name": "/etc/mercurial/hgrc, $HOME/.hgrc, .hg/hgrc",
                        "lines": 4
                    },
                    {
                        "name": ".hgignore",
                        "lines": 3
                    },
                    {
                        "name": ".hgsub",
                        "lines": 3
                    },
                    {
                        "name": ".hgsubstate",
                        "lines": 3
                    },
                    {
                        "name": ".hgtags",
                        "lines": 4
                    },
                    {
                        "name": ".hg/last-message.txt",
                        "lines": 3
                    },
                    {
                        "name": ".hg/localtags",
                        "lines": 7
                    }
                ]
            },
            {
                "name": "BUGS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "RESOURCES",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "COPYING",
                "lines": 3,
                "subsections": []
            }
        ]
    }
}