hg.1.txt
563 lines
| 16.9 KiB
| text/plain
|
TextLexer
/ doc / hg.1.txt
jake@edge2.net
|
r177 | HG(1) | ||
===== | ||||
Matt Mackall <mpm@selenic.com> | ||||
NAME | ||||
---- | ||||
mpm@selenic.com
|
r438 | hg - Mercurial source code management system | ||
jake@edge2.net
|
r177 | |||
SYNOPSIS | ||||
-------- | ||||
'hg' [-v -d -q -y] <command> [command options] [files] | ||||
DESCRIPTION | ||||
----------- | ||||
The hg(1) command provides a command line interface to the Mercurial system. | ||||
OPTIONS | ||||
------- | ||||
mpm@selenic.com
|
r438 | |||
jake@edge2.net
|
r177 | --debug, -d:: | ||
enable debugging output | ||||
--quiet, -q:: | ||||
suppress output | ||||
--verbose, -v:: | ||||
enable additional output | ||||
--noninteractive, -y:: | ||||
do not prompt, assume 'yes' for any required answers | ||||
COMMAND ELEMENTS | ||||
---------------- | ||||
files ...:: | ||||
indicates one or more filename or relative path filenames | ||||
path:: | ||||
indicates a path on the local machine | ||||
Thomas Arendsen Hein
|
r478 | revision:: | ||
mpm@selenic.com
|
r438 | indicates a changeset which can be specified as a changeset revision | ||
number, a tag, or a unique substring of the changeset hash value | ||||
jake@edge2.net
|
r177 | |||
repository path:: | ||||
mpm@selenic.com
|
r498 | either the pathname of a local repository or the URI of a remote | ||
jake@edge2.net
|
r181 | repository. There are two available URI protocols, http:// which is | ||
Thomas Arendsen Hein
|
r478 | fast and the old-http:// protocol which is much slower but does not | ||
mpm@selenic.com
|
r438 | require a special server on the web host. | ||
jake@edge2.net
|
r177 | |||
COMMANDS | ||||
-------- | ||||
mpm@selenic.com
|
r438 | |||
jake@edge2.net
|
r177 | add [files ...]:: | ||
mpm@selenic.com
|
r497 | Schedule files to be version controlled and added to the repository. | ||
mpm@selenic.com
|
r498 | The files will be added to the repository at the next commit. | ||
jake@edge2.net
|
r177 | |||
addremove:: | ||||
mpm@selenic.com
|
r497 | Add all new files and remove all missing files from the repository. | ||
New files are ignored if they match any of the patterns in .hgignore. As | ||||
mpm@selenic.com
|
r498 | with add, these changes take effect at the next commit. | ||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r438 | annotate [-r <rev> -u -n -c] [files ...]:: | ||
mpm@selenic.com
|
r497 | List changes in files, showing the revision id responsible for each line | ||
This command is useful to discover who did a change or when a change took | ||||
place. | ||||
mpm@selenic.com
|
r438 | options: | ||
-r, --revision <rev> annotate the specified revision | ||||
-u, --user list the author | ||||
-c, --changeset list the changeset | ||||
-n, --number list the revision number (default) | ||||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r438 | cat <file> [revision]:: | ||
mpm@selenic.com
|
r497 | Output to stdout the given revision for the specified file. | ||
mpm@selenic.com
|
r498 | If no revision is given then the tip is used. | ||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r485 | clone [-U] <source> [dest]:: | ||
mpm@selenic.com
|
r497 | Create a copy of an existing repository in a new directory. | ||
mpm@selenic.com
|
r523 | If no destination directory name is specified, it defaults to the | ||
basename of the source. | ||||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r498 | The source is added to the new repository's .hg/hgrc file to be used in | ||
mpm@selenic.com
|
r497 | future pulls. | ||
mpm@selenic.com
|
r498 | For efficiency, hardlinks are used for cloning whenever the | ||
source and destination are on the same filesystem. | ||||
mpm@selenic.com
|
r497 | |||
options: | ||||
mpm@selenic.com
|
r505 | -U, --noupdate do not update the new working directory | ||
mpm@selenic.com
|
r497 | |||
commit [-A -t -l <file> -t <text> -u <user> -d <datecode>] [files...]:: | ||||
mpm@selenic.com
|
r498 | Commit changes to the given files into the repository. | ||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r498 | If a list of files is omitted, all changes reported by "hg status" | ||
will be commited. | ||||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r498 | The HGEDITOR or EDITOR environment variables are used to start an | ||
editor to add a commit comment. | ||||
mpm@selenic.com
|
r497 | |||
Options: | ||||
-A, --addremove run addremove during commit | ||||
-t, --text <text> use <text> as commit message | ||||
-l, --logfile <file> show the commit message for the given file | ||||
-d, --date <datecode> record datecode as commit date | ||||
-u, --user <user> record user as commiter | ||||
aliases: ci | ||||
copy <source> <dest>:: | ||||
Mark <dest> file as a copy or rename of a <source> one | ||||
This command takes effect for the next commit. | ||||
diff [-r revision] [-r revision] [files ...]:: | ||||
Show differences between revisions for the specified files. | ||||
Differences between files are shown using the unified diff format. | ||||
mpm@selenic.com
|
r498 | When two revision arguments are given, then changes are shown | ||
between those revisions. If only one revision is specified then | ||||
that revision is compared to the working directory, and, when no | ||||
revisions are specified, the working directory files are compared | ||||
to its parent. | ||||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r580 | export [-o filespec] [revision] ...:: | ||
Print the changeset header and diffs for one or more revisions. | ||||
The information shown in the changeset header is: author, | ||||
changeset hash, parent and commit comment. | ||||
Output may be to a file, in which case the name of the file is | ||||
given using a format string. The formatting rules are as follows: | ||||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r580 | %% literal "%" character | ||
%H changeset hash (40 bytes of hexadecimal) | ||||
%N number of patches being generated | ||||
%R changeset revision number | ||||
%b basename of the exporting repository | ||||
%h short-form changeset hash (12 bytes of hexadecimal) | ||||
%n zero-padded sequence number, starting at 1 | ||||
%r zero-padded changeset revision number | ||||
Options: | ||||
-o, --output <filespec> print output to file with formatted named | ||||
mpm@selenic.com
|
r497 | |||
forget [files]:: | ||||
Undo an 'hg add' scheduled for the next commit. | ||||
heads:: | ||||
Show all repository head changesets. | ||||
mpm@selenic.com
|
r498 | Repository "heads" are changesets that don't have children | ||
changesets. They are where development generally takes place and | ||||
are the usual targets for update and merge operations. | ||||
mpm@selenic.com
|
r497 | |||
identify:: | ||||
Print a short summary of the current state of the repo. | ||||
This summary identifies the repository state using one or two parent | ||||
hash identifiers, followed by a "+" if there are uncommitted changes | ||||
in the working directory, followed by a list of tags for this revision. | ||||
aliases: id | ||||
import [-p <n> -b <base> -q] <patches>:: | ||||
Import a list of patches and commit them individually. | ||||
options: | ||||
-p, --strip <n> directory strip option for patch. This has the same | ||||
meaning as the correnponding patch option | ||||
-b <path> base directory to read patches from | ||||
aliases: patch | ||||
mpm@selenic.com
|
r496 | init:: | ||
Initialize a new repository in the current directory. | ||||
jake@edge2.net
|
r177 | |||
Alecs King
|
r612 | log [-r revision ...] [-p] [file]:: | ||
mpm@selenic.com
|
r509 | Print the revision history of the specified file or the entire project. | ||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r509 | By default this command outputs: changeset id and hash, tags, | ||
parents, user, date and time, and a summary for each commit. The | ||||
-v switch adds some more detail, such as changed files, manifest | ||||
hashes or message signatures. | ||||
Alecs King
|
r612 | options: | ||
-r, --rev <A>, ... When a revision argument is given, only this file or | ||||
changelog revision is displayed. With two revision | ||||
arguments all revisions in this range are listed. | ||||
Additional revision arguments may be given repeating | ||||
the above cycle. | ||||
-p, --patch show patch | ||||
Thomas Arendsen Hein
|
r552 | |||
mpm@selenic.com
|
r509 | aliases: history | ||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r438 | manifest [revision]:: | ||
mpm@selenic.com
|
r497 | Print a list of version controlled files for the given revision. | ||
The manifest is the list of files being version controlled. If no revision | ||||
is given then the tip is used. | ||||
mpm@selenic.com
|
r438 | |||
parents:: | ||||
Print the working directory's parent revisions. | ||||
pull <repository path>:: | ||||
mpm@selenic.com
|
r498 | Pull changes from a remote repository to a local one. | ||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r498 | This finds all changes from the repository at the specified path | ||
or URL and adds them to the local repository. By default, this | ||||
does not update the copy of the project in the working directory. | ||||
mpm@selenic.com
|
r438 | |||
options: | ||||
-u, --update update the working directory to tip after pull | ||||
push <destination>:: | ||||
mpm@selenic.com
|
r497 | Push changes from the local repository to the given destination. | ||
mpm@selenic.com
|
r498 | This is the symmetrical operation for pull. It helps to move | ||
changes from the current repository to a different one. If the | ||||
destination is local this is identical to a pull in that directory | ||||
from the current one. | ||||
mpm@selenic.com
|
r438 | |||
The other currently available push method is SSH. This requires an | ||||
accessible shell account on the destination machine and a copy of | ||||
hg in the remote path. Destinations are specified in the following | ||||
form: | ||||
ssh://[user@]host[:port]/path | ||||
rawcommit [-p -d -u -F -t -l]:: | ||||
mpm@selenic.com
|
r497 | Lowlevel commit, for use in helper scripts. | ||
This command is not intended to be used by normal users, as it is | ||||
primarily useful for importing from other SCMs. | ||||
jake@edge2.net
|
r177 | |||
jake@edge2.net
|
r196 | recover:: | ||
mpm@selenic.com
|
r497 | Recover from an interrupted commit or pull. | ||
This command tries to fix the repository status after an interrupted | ||||
operation. It should only be necessary when Mercurial suggests it. | ||||
jake@edge2.net
|
r196 | |||
jake@edge2.net
|
r177 | remove [files ...]:: | ||
mpm@selenic.com
|
r497 | Schedule the indicated files for removal from the repository. | ||
mpm@selenic.com
|
r498 | This command shedules the files to be removed at the next commit. | ||
This only removes files from the current branch, not from the | ||||
entire project history. | ||||
Thomas Arendsen Hein
|
r478 | |||
mpm@selenic.com
|
r438 | aliases: rm | ||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r588 | revert [names ...]:: | ||
Revert any uncommitted modifications made to the named files or | ||||
directories. This restores the contents of the affected files to | ||||
an unmodified state. | ||||
If a file has been deleted, it is recreated. If the executable | ||||
mode of a file was changed, it is reset. | ||||
If a directory is given, all files in that directory and its | ||||
subdirectories are reverted. | ||||
If no arguments are given, all files in the current directory and | ||||
its subdirectories are reverted. | ||||
options: | ||||
-r, --rev <rev> revision to revert to | ||||
-n, --nonrecursive do not recurse into subdirectories | ||||
Thomas Arendsen Hein
|
r478 | root:: | ||
Print the root directory of the current repository. | ||||
mpm@selenic.com
|
r606 | serve [options]:: | ||
mpm@selenic.com
|
r438 | Start a local HTTP repository browser and pull server. | ||
mpm@selenic.com
|
r605 | By default, the server logs accesses to stdout and errors to | ||
stderr. Use the "-A" and "-E" options to log to files. | ||||
mpm@selenic.com
|
r438 | options: | ||
mpm@selenic.com
|
r605 | -A, --accesslog <file> name of access log file to write to | ||
-E, --errorlog <file> name of error log file to write to | ||||
-a, --address <addr> address to use | ||||
-p, --port <n> port to use (default: 8000) | ||||
-n, --name <name> name to show in web pages (default: working dir) | ||||
mpm@selenic.com
|
r438 | -t, --templatedir <path> web templates to use | ||
jake@edge2.net
|
r177 | |||
status:: | ||||
mpm@selenic.com
|
r438 | Show changed files in the working directory. | ||
mpm@selenic.com
|
r497 | The codes used to show the status of files are: | ||
mpm@selenic.com
|
r438 | C = changed | ||
A = added | ||||
R = removed | ||||
? = not tracked | ||||
tag [-t <text> -d <datecode> -u <user>] <name> [revision]:: | ||||
mpm@selenic.com
|
r497 | Name a particular revision using <name>. | ||
Tags are used to name particular revisions of the repository and are | ||||
very useful to compare different revision, to go back to significant | ||||
mpm@selenic.com
|
r498 | earlier versions or to mark branch points as releases, etc. | ||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r498 | If no revision is given, the tip is used. | ||
mpm@selenic.com
|
r438 | |||
mpm@selenic.com
|
r498 | To facilitate version control, distribution, and merging of tags, | ||
they are stored as a file named ".hgtags" which is managed | ||||
similarly to other project files and can be hand-edited if | ||||
necessary. | ||||
mpm@selenic.com
|
r438 | options: | ||
-t, --text <text> message for tag commit log entry | ||||
-d, --date <datecode> datecode for commit | ||||
-u, --user <user> user for commit | ||||
jake@edge2.net
|
r177 | |||
mpm@selenic.com
|
r498 | Note: Mercurial also has support for "local tags" that are not | ||
version-controlled or distributed which are stored in the .hg/hgrc | ||||
file. | ||||
jake@edge2.net
|
r177 | tags:: | ||
Thomas Arendsen Hein
|
r478 | List the repository tags. | ||
mpm@selenic.com
|
r438 | |||
mpm@selenic.com
|
r498 | This lists both regular and local tags. | ||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r438 | tip:: | ||
Thomas Arendsen Hein
|
r478 | Show the tip revision. | ||
jake@edge2.net
|
r177 | |||
jake@edge2.net
|
r196 | undo:: | ||
mpm@selenic.com
|
r438 | Undo the last commit or pull transaction. | ||
mpm@selenic.com
|
r595 | Roll back the last pull or commit transaction on the | ||
repository, restoring the project to its earlier state. | ||||
This command should be used with care. There is only one level of | ||||
undo and there is no redo. | ||||
This command is not intended for use on public repositories. Once | ||||
a change is visible for pull by other users, undoing it locally is | ||||
ineffective. | ||||
mpm@selenic.com
|
r438 | update [-m -C] [revision]:: | ||
mpm@selenic.com
|
r498 | Update the working directory to the specified revision. | ||
mpm@selenic.com
|
r438 | |||
mpm@selenic.com
|
r498 | By default, update will refuse to run if doing so would require | ||
merging or discarding local changes. | ||||
With the -m option, a merge will be performed. | ||||
With the -C option, local changes will be lost. | ||||
mpm@selenic.com
|
r497 | |||
mpm@selenic.com
|
r438 | options: | ||
-m, --merge allow merging of branches | ||||
-C, --clean overwrite locally modified files | ||||
aliases: up checkout co | ||||
verify:: | ||||
Verify the integrity of the current repository. | ||||
This will perform an extensive check of the repository's | ||||
integrity, validating the hashes and checksums of each entry in | ||||
the changelog, manifest, and tracked files, as well as the | ||||
integrity of their crosslinks and indices. | ||||
mpm@selenic.com
|
r580 | SPECIFYING SINGLE REVISIONS | ||
--------------------------- | ||||
Mercurial accepts several notations for identifying individual | ||||
revisions. | ||||
A plain integer is treated as a revision number. Negative | ||||
integers are treated as offsets from the tip, with -1 denoting the | ||||
tip. | ||||
A 40-digit hexadecimal string is treated as a unique revision | ||||
identifier. | ||||
A hexadecimal string less than 40 characters long is treated as a | ||||
unique revision identifier, and referred to as a short-form | ||||
identifier. A short-form identifier is only valid if it is the | ||||
prefix of one full-length identifier. | ||||
Any other string is treated as a tag name, which is a symbolic | ||||
name associated with a revision identifier. Tag names may not | ||||
contain the ":" character. | ||||
The reserved name "tip" is a special tag that always identifies | ||||
the most recent revision. | ||||
SPECIFYING MULTIPLE REVISIONS | ||||
----------------------------- | ||||
When Mercurial accepts more than one revision, they may be | ||||
specified individually, or provided as a continuous range, | ||||
separated by the ":" character. | ||||
The syntax of range notation is [BEGIN]:[END], where BEGIN and END | ||||
are revision identifiers. Both BEGIN and END are optional. If | ||||
BEGIN is not specified, it defaults to revision number 0. If END | ||||
is not specified, it defaults to the tip. The range ":" thus | ||||
means "all revisions". | ||||
If BEGIN is greater than END, revisions are treated in reverse | ||||
order. | ||||
A range acts as an open interval. This means that a range of 3:5 | ||||
gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2. | ||||
jake@edge2.net
|
r196 | |||
jake@edge2.net
|
r177 | ENVIRONMENT VARIABLES | ||
--------------------- | ||||
mpm@selenic.com
|
r438 | |||
Thomas Arendsen Hein
|
r478 | HGEDITOR:: | ||
This is the name of the editor to use when committing. Defaults to the | ||||
Matt Mackall
|
r608 | value of EDITOR. | ||
(deprecated, use .hgrc) | ||||
Thomas Arendsen Hein
|
r478 | |||
jake@edge2.net
|
r177 | HGMERGE:: | ||
mpm@selenic.com
|
r498 | An executable to use for resolving merge conflicts. The program | ||
mpm@selenic.com
|
r438 | will be executed with three arguments: local file, remote file, | ||
ancestor file. | ||||
The default program is "hgmerge", which is a shell script provided | ||||
by Mercurial with some sensible defaults. | ||||
jake@edge2.net
|
r177 | |||
Matt Mackall
|
r608 | (deprecated, use .hgrc) | ||
jake@edge2.net
|
r177 | HGUSER:: | ||
mpm@selenic.com
|
r438 | This is the string used for the author of a commit. | ||
jake@edge2.net
|
r177 | |||
Matt Mackall
|
r608 | (deprecated, use .hgrc) | ||
jake@edge2.net
|
r177 | EMAIL:: | ||
mpm@selenic.com
|
r438 | If HGUSER is not set, this will be used as the author for a commit. | ||
jake@edge2.net
|
r177 | |||
LOGNAME:: | ||||
Thomas Arendsen Hein
|
r478 | If neither HGUSER nor EMAIL is set, LOGNAME will be used (with | ||
mpm@selenic.com
|
r438 | '@hostname' appended) as the author value for a commit. | ||
jake@edge2.net
|
r177 | |||
EDITOR:: | ||||
Thomas Arendsen Hein
|
r478 | This is the name of the editor used in the hgmerge script. It will be | ||
mpm@selenic.com
|
r498 | used for commit messages if HGEDITOR isn't set. Defaults to 'vi'. | ||
mpm@selenic.com
|
r438 | |||
PYTHONPATH:: | ||||
This is used by Python to find imported modules and may need to be set | ||||
appropriately if Mercurial is not installed system-wide. | ||||
jake@edge2.net
|
r177 | |||
FILES | ||||
----- | ||||
.hgignore:: | ||||
mpm@selenic.com
|
r438 | This file contains regular expressions (one per line) that describe file | ||
Thomas Arendsen Hein
|
r478 | names that should be ignored by hg. | ||
jake@edge2.net
|
r177 | |||
.hgtags:: | ||||
mpm@selenic.com
|
r438 | This file contains changeset hash values and text tag names (one of each | ||
jake@edge2.net
|
r177 | seperated by spaces) that correspond to tagged versions of the repository | ||
contents. | ||||
mpm@selenic.com
|
r438 | $HOME/.hgrc, .hg/hgrc:: | ||
This file contains defaults and configuration. Values in .hg/hgrc | ||||
override those in .hgrc. | ||||
Matt Mackall
|
r608 | |||
UI OPTIONS | ||||
---------- | ||||
Various configuration options can be set in .hgrc: | ||||
------------- | ||||
[ui] | ||||
verbose = 0 | ||||
username = Matt Mackall <mpm@selenic.com> | ||||
editor = hgeditor | ||||
merge = hgmerge | ||||
------------- | ||||
mpm@selenic.com
|
r438 | NAMED REPOSITORIES | ||
------------------ | ||||
mpm@selenic.com
|
r487 | To give symbolic names to a repository, create a section in .hgrc | ||
or .hg/hgrc containing assignments of names to paths. Example: | ||||
mpm@selenic.com
|
r438 | |||
mpm@selenic.com
|
r487 | ----------------- | ||
mpm@selenic.com
|
r438 | [paths] | ||
hg = http://selenic.com/hg | ||||
Thomas Arendsen Hein
|
r478 | tah = http://hg.intevation.org/mercurial-tah/ | ||
mpm@selenic.com
|
r487 | ----------------- | ||
mpm@selenic.com
|
r498 | LOCAL TAGS | ||
---------- | ||||
To create tags that are local to the repository and not distributed or | ||||
version-controlled, create an hgrc section like the following: | ||||
---------------- | ||||
[tags] | ||||
working = 2dcced388cab3677a8f543c3c47a0ad34ac9d435 | ||||
tested = 12e0fdbc57a0be78f0e817fd1d170a3615cd35da | ||||
---------------- | ||||
mpm@selenic.com
|
r487 | HOOKS | ||
----- | ||||
Mercurial supports a set of 'hook', commands that get automatically | ||||
executed by various actions such as starting or finishing a commit. To | ||||
specify a hook, simply create an hgrc section like the following: | ||||
----------------- | ||||
[hooks] | ||||
precommit = echo "this hook gets executed immediately before a commit" | ||||
commit = hg export $NODE | mail -s "new commit $NODE" commit-list | ||||
----------------- | ||||
jake@edge2.net
|
r181 | |||
mpm@selenic.com
|
r321 | NON_TRANSPARENT PROXY SUPPORT | ||
mpm@selenic.com
|
r438 | ----------------------------- | ||
mpm@selenic.com
|
r321 | |||
mpm@selenic.com
|
r487 | To access a Mercurial repository through a proxy, create a file | ||
$HOME/.hgrc in the following format: | ||||
mpm@selenic.com
|
r321 | |||
mpm@selenic.com
|
r487 | -------------- | ||
mpm@selenic.com
|
r321 | [http_proxy] | ||
host=myproxy:8080 | ||||
user=<username> | ||||
passwd=<password> | ||||
no=<localhost1>,<localhost2>,<localhost3>,... | ||||
mpm@selenic.com
|
r487 | -------------- | ||
mpm@selenic.com
|
r321 | |||
mpm@selenic.com
|
r498 | "user" and "passwd" fields are used for authenticating proxies, "no" is a | ||
comma-separated list of local host names to not proxy. | ||||
mpm@selenic.com
|
r321 | |||
jake@edge2.net
|
r177 | BUGS | ||
---- | ||||
Probably lots, please post them to the mailing list (See Resources below) | ||||
when you find them. | ||||
AUTHOR | ||||
------ | ||||
Written by Matt Mackall <mpm@selenic.com> | ||||
RESOURCES | ||||
--------- | ||||
http://selenic.com/mercurial[Main Web Site] | ||||
http://selenic.com/hg[Source code repository] | ||||
http://selenic.com/mailman/listinfo/mercurial[Mailing list] | ||||
COPYING | ||||
------- | ||||
Copyright (C) 2005 Matt Mackall. | ||||
Free use of this software is granted under the terms of the GNU General | ||||
Public License (GPL). | ||||