Mercurial > lm
Help: import
hg import [OPTION]... PATCH...
aliases: patch
import an ordered set of patches
Import a list of patches and commit them individually (unless --no-commit is specified).
To read a patch from standard input (stdin), use "-" as the patch name. If a URL is specified, the patch will be downloaded from there.
Import first applies changes to the working directory (unless --bypass is specified), import will abort if there are outstanding changes.
Use --bypass to apply and commit patches directly to the repository, without affecting the working directory. Without --exact, patches will be applied on top of the working directory parent revision.
You can import a patch straight from a mail message. Even patches as attachments work (to use the body part, it must have type text/plain or text/x-patch). From and Subject headers of email message are used as default committer and commit message. All text/plain body parts before first diff are added to the commit message.
If the imported patch was generated by 'hg export', user and description from patch override values from message headers and body. Values given on command line with -m/--message and -u/--user override these.
If --exact is specified, import will set the working directory to the parent of each patch before applying it, and will abort if the resulting changeset has a different ID than the one recorded in the patch. This will guard against various ways that portable patch formats and mail systems might fail to transfer Mercurial data or metadata. See 'hg bundle' for lossless transmission.
Use --partial to ensure a changeset will be created from the patch even if some hunks fail to apply. Hunks that fail to apply will be written to a <target-file>.rej file. Conflicts can then be resolved by hand before 'hg commit --amend' is run to update the created changeset. This flag exists to let people import patches that partially apply without losing the associated metadata (author, date, description, ...).
Note:
When no hunks apply cleanly, 'hg import --partial' will create an empty changeset, importing only the patch metadata.
With -s/--similarity, hg will attempt to discover renames and copies in the patch in the same way as 'hg addremove'.
It is possible to use external patch programs to perform the patch by setting the "ui.patch" configuration option. For the default internal tool, the fuzz can also be configured via "patch.fuzz". See 'hg help config' for more information about configuration files and how to use these options.
See 'hg help dates' for a list of formats valid for -d/--date.
Examples:
- import a traditional patch from a website and detect renames:
hg import -s 80 http://example.com/bugfix.patch
- import a changeset from an hgweb server:
hg import https://www.mercurial-scm.org/repo/hg/rev/5ca8c111e9aa
- import all the patches in an Unix-style mbox:
hg import incoming-patches.mbox
- import patches from stdin:
hg import -
- attempt to exactly restore an exported changeset (not always possible):
hg import --exact proposed-fix.patch
- use an external tool to apply a patch which is too fuzzy for the default internal tool.
hg import --config ui.patch="patch --merge" fuzzy.patch
- change the default fuzzing from 2 to a less strict 7
hg import --config ui.fuzz=7 fuzz.patch
Returns 0 on success, 1 on partial success (see --partial).
options:
-p | --strip NUM | directory strip option for patch. This has the same meaning as the corresponding patch option (default: 1) |
-b | --base PATH | base path (DEPRECATED) |
--secret | use the secret phase for committing | |
-e | --edit | invoke editor on commit messages |
-f | --force | skip check for outstanding uncommitted changes (DEPRECATED) |
--no-commit | don't commit, just update the working directory | |
--bypass | apply patch without touching the working directory | |
--partial | commit even if some hunks fail | |
--exact | abort if patch would apply lossily | |
--prefix DIR | apply patch to subdirectory | |
--import-branch | use any branch information in patch (implied by --exact) | |
-m | --message TEXT | use text as commit message |
-l | --logfile FILE | read commit message from file |
-d | --date DATE | record the specified date as commit date |
-u | --user USER | record the specified user as committer |
-s | --similarity SIMILARITY | guess renamed files by similarity (0<=s<=100) |
global options ([+] can be repeated):
-R | --repository REPO | repository root directory or name of overlay bundle file |
--cwd DIR | change working directory | |
-y | --noninteractive | do not prompt, automatically pick the first choice for all prompts |
-q | --quiet | suppress output |
-v | --verbose | enable additional output |
--color TYPE | when to colorize (boolean, always, auto, never, or debug) | |
--config CONFIG [+] | set/override config option (use 'section.name=value') | |
--debug | enable debugging output | |
--debugger | start debugger | |
--encoding ENCODE | set the charset encoding (default: UTF-8) | |
--encodingmode MODE | set the charset encoding mode (default: strict) | |
--traceback | always print a traceback on exception | |
--time | time how long the command takes | |
--profile | print command execution profile | |
--version | output version information and exit | |
-h | --help | display help and exit |
--hidden | consider hidden changesets | |
--pager TYPE | when to paginate (boolean, always, auto, or never) (default: auto) |