--- a/mercurial/commands.py Tue Jul 07 23:30:48 2009 +0200
+++ b/mercurial/commands.py Tue Jul 07 23:54:30 2009 +0200
@@ -20,11 +20,10 @@
def add(ui, repo, *pats, **opts):
"""add the specified files on the next commit
- Schedule files to be version controlled and added to the
- repository.
-
- The files will be added to the repository at the next commit. To
- undo an add before that, see hg forget.
+ Schedule files to be version controlled and added to the repository.
+
+ The files will be added to the repository at the next commit. To undo an
+ add before that, see hg forget.
If no names are given, add all files to the repository.
"""
@@ -49,19 +48,16 @@
def addremove(ui, repo, *pats, **opts):
"""add all new files, delete all missing files
- 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 with add, these changes take effect at the next
- commit.
-
- Use the -s/--similarity option to detect renamed files. With a
- parameter > 0, this compares every removed file with every added
- file and records those similar enough as renames. This option
- takes a percentage between 0 (disabled) and 100 (files must be
- identical) as its parameter. Detecting renamed files this way can
- be expensive.
+ 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
+ with add, these changes take effect at the next commit.
+
+ Use the -s/--similarity option to detect renamed files. With a parameter >
+ 0, this compares every removed file with every added file and records
+ those similar enough as renames. This option takes a percentage between 0
+ (disabled) and 100 (files must be identical) as its parameter. Detecting
+ renamed files this way can be expensive.
"""
try:
sim = float(opts.get('similarity') or 0)
@@ -74,16 +70,13 @@
def annotate(ui, repo, *pats, **opts):
"""show changeset information by line for each file
- List changes in files, showing the revision id responsible for
- each line
-
- This command is useful for discovering when a change was made and
- by whom.
-
- Without the -a/--text option, annotate will avoid processing files
- it detects as binary. With -a, annotate will annotate the file
- anyway, although the results will probably be neither useful
- nor desirable.
+ List changes in files, showing the revision id responsible for each line
+
+ This command is useful for discovering when a change was made and by whom.
+
+ Without the -a/--text option, annotate will avoid processing files it
+ detects as binary. With -a, annotate will annotate the file anyway,
+ although the results will probably be neither useful nor desirable.
"""
datefunc = ui.quiet and util.shortdate or util.datestr
getdate = util.cachefunc(lambda x: datefunc(x[0].date()))
@@ -137,11 +130,10 @@
def archive(ui, repo, dest, **opts):
'''create an unversioned archive of a repository revision
- By default, the revision used is the parent of the working
- directory; use -r/--rev to specify a different revision.
-
- To specify the type of archive to create, use -t/--type. Valid
- types are:
+ By default, the revision used is the parent of the working directory; use
+ -r/--rev to specify a different revision.
+
+ To specify the type of archive to create, use -t/--type. Valid types are:
"files" (default): a directory full of files
"tar": tar archive, uncompressed
@@ -150,13 +142,12 @@
"uzip": zip archive, uncompressed
"zip": zip archive, compressed using deflate
- The exact name of the destination archive or directory is given
- using a format string; see 'hg help export' for details.
-
- Each member added to an archive file has a directory prefix
- prepended. Use -p/--prefix to specify a format string for the
- prefix. The default is the basename of the archive, with suffixes
- removed.
+ The exact name of the destination archive or directory is given using a
+ format string; see 'hg help export' for details.
+
+ Each member added to an archive file has a directory prefix prepended. Use
+ -p/--prefix to specify a format string for the prefix. The default is the
+ basename of the archive, with suffixes removed.
'''
ctx = repo[opts.get('rev')]
@@ -181,17 +172,17 @@
def backout(ui, repo, node=None, rev=None, **opts):
'''reverse effect of earlier changeset
- Commit the backed out changes as a new changeset. The new
- changeset is a child of the backed out changeset.
-
- If you backout a changeset other than the tip, a new head is
- created. This head will be the new tip and you should merge this
- backout changeset with another head.
-
- The --merge option remembers the parent of the working directory
- before starting the backout, then merges the new head with that
- changeset afterwards. This saves you from doing the merge by hand.
- The result of this merge is not committed, as with a normal merge.
+ Commit the backed out changes as a new changeset. The new changeset is a
+ child of the backed out changeset.
+
+ If you backout a changeset other than the tip, a new head is created. This
+ head will be the new tip and you should merge this backout changeset with
+ another head.
+
+ The --merge option remembers the parent of the working directory before
+ starting the backout, then merges the new head with that changeset
+ afterwards. This saves you from doing the merge by hand. The result of
+ this merge is not committed, as with a normal merge.
See 'hg help dates' for a list of formats valid for -d/--date.
'''
@@ -268,23 +259,22 @@
reset=None, good=None, bad=None, skip=None, noupdate=None):
"""subdivision search of changesets
- This command helps to find changesets which introduce problems. To
- use, mark the earliest changeset you know exhibits the problem as
- bad, then mark the latest changeset which is free from the problem
- as good. Bisect will update your working directory to a revision
- for testing (unless the -U/--noupdate option is specified). Once
- you have performed tests, mark the working directory as good or
- bad, and bisect will either update to another candidate changeset
- or announce that it has found the bad revision.
-
- As a shortcut, you can also use the revision argument to mark a
- revision as good or bad without checking it out first.
-
- If you supply a command, it will be used for automatic bisection.
- Its exit status will be used to mark revisions as good or bad:
- status 0 means good, 125 means to skip the revision, 127
- (command not found) will abort the bisection, and any other
- non-zero exit status means the revision is bad.
+ This command helps to find changesets which introduce problems. To use,
+ mark the earliest changeset you know exhibits the problem as bad, then
+ mark the latest changeset which is free from the problem as good. Bisect
+ will update your working directory to a revision for testing (unless the
+ -U/--noupdate option is specified). Once you have performed tests, mark
+ the working directory as good or bad, and bisect will either update to
+ another candidate changeset or announce that it has found the bad
+ revision.
+
+ As a shortcut, you can also use the revision argument to mark a revision
+ as good or bad without checking it out first.
+
+ If you supply a command, it will be used for automatic bisection. Its exit
+ status will be used to mark revisions as good or bad: status 0 means good,
+ 125 means to skip the revision, 127 (command not found) will abort the
+ bisection, and any other non-zero exit status means the revision is bad.
"""
def print_result(nodes, good):
displayer = cmdutil.show_changeset(ui, repo, {})
@@ -406,21 +396,19 @@
def branch(ui, repo, label=None, **opts):
"""set or show the current branch name
- With no argument, show the current branch name. With one argument,
- set the working directory branch name (the branch will not exist
- in the repository until the next commit). Standard practice
- recommends that primary development take place on the 'default'
- branch.
-
- Unless -f/--force is specified, branch will not let you set a
- branch name that already exists, even if it's inactive.
-
- Use -C/--clean to reset the working directory branch to that of
- the parent of the working directory, negating a previous branch
- change.
-
- Use the command 'hg update' to switch to an existing branch. Use
- 'hg commit --close-branch' to mark this branch as closed.
+ With no argument, show the current branch name. With one argument, set the
+ working directory branch name (the branch will not exist in the repository
+ until the next commit). Standard practice recommends that primary
+ development take place on the 'default' branch.
+
+ Unless -f/--force is specified, branch will not let you set a branch name
+ that already exists, even if it's inactive.
+
+ Use -C/--clean to reset the working directory branch to that of the parent
+ of the working directory, negating a previous branch change.
+
+ Use the command 'hg update' to switch to an existing branch. Use 'hg
+ commit --close-branch' to mark this branch as closed.
"""
if opts.get('clean'):
@@ -440,12 +428,12 @@
def branches(ui, repo, active=False, closed=False):
"""list repository named branches
- List the repository's named branches, indicating which ones are
- inactive. If -c/--closed is specified, also list branches which have
- been marked closed (see hg commit --close-branch).
-
- If -a/--active is specified, only show active branches. A branch
- is considered active if it contains repository heads.
+ List the repository's named branches, indicating which ones are inactive.
+ If -c/--closed is specified, also list branches which have been marked
+ closed (see hg commit --close-branch).
+
+ If -a/--active is specified, only show active branches. A branch is
+ considered active if it contains repository heads.
Use the command 'hg update' to switch to an existing branch.
"""
@@ -482,25 +470,24 @@
def bundle(ui, repo, fname, dest=None, **opts):
"""create a changegroup file
- Generate a compressed changegroup file collecting changesets not
- known to be in another repository.
-
- If no destination repository is specified the destination is
- assumed to have all the nodes specified by one or more --base
- parameters. To create a bundle containing all changesets, use
- -a/--all (or --base null).
-
- You can change compression method with the -t/--type option.
- The available compression methods are: none, bzip2, and
- gzip (by default, bundles are compressed using bzip2).
-
- The bundle file can then be transferred using conventional means
- and applied to another repository with the unbundle or pull
- command. This is useful when direct push and pull are not
- available or when exporting an entire repository is undesirable.
-
- Applying bundles preserves all changeset contents including
- permissions, copy/rename information, and revision history.
+ Generate a compressed changegroup file collecting changesets not known to
+ be in another repository.
+
+ If no destination repository is specified the destination is assumed to
+ have all the nodes specified by one or more --base parameters. To create a
+ bundle containing all changesets, use -a/--all (or --base null).
+
+ You can change compression method with the -t/--type option. The available
+ compression methods are: none, bzip2, and gzip (by default, bundles are
+ compressed using bzip2).
+
+ The bundle file can then be transferred using conventional means and
+ applied to another repository with the unbundle or pull command. This is
+ useful when direct push and pull are not available or when exporting an
+ entire repository is undesirable.
+
+ Applying bundles preserves all changeset contents including permissions,
+ copy/rename information, and revision history.
"""
revs = opts.get('rev') or None
if revs:
@@ -557,13 +544,13 @@
def cat(ui, repo, file1, *pats, **opts):
"""output the current or given revision of files
- Print the specified files as they were at the given revision. If
- no revision is given, the parent of the working directory is used,
- or tip if no revision is checked out.
-
- Output may be to a file, in which case the name of the file is
- given using a format string. The formatting rules are the same as
- for the export command, with the following additions:
+ Print the specified files as they were at the given revision. If no
+ revision is given, the parent of the working directory is used, or tip if
+ no revision is checked out.
+
+ Output may be to a file, in which case the name of the file is given using
+ a format string. The formatting rules are the same as for the export
+ command, with the following additions:
%s basename of file being printed
%d dirname of file being printed, or '.' if in repository root
@@ -586,47 +573,42 @@
Create a copy of an existing repository in a new directory.
- If no destination directory name is specified, it defaults to the
- basename of the source.
-
- The location of the source is added to the new repository's
- .hg/hgrc file, as the default to be used for future pulls.
-
- If you use the -r/--rev option to clone up to a specific revision,
- no subsequent revisions (including subsequent tags) will be
- present in the cloned repository. This option implies --pull, even
- on local repositories.
-
- By default, clone will check out the head of the 'default' branch.
- If the -U/--noupdate option is used, the new clone will contain
- only a repository (.hg) and no working copy (the working copy
- parent is the null revision).
+ If no destination directory name is specified, it defaults to the basename
+ of the source.
+
+ The location of the source is added to the new repository's .hg/hgrc file,
+ as the default to be used for future pulls.
+
+ If you use the -r/--rev option to clone up to a specific revision, no
+ subsequent revisions (including subsequent tags) will be present in the
+ cloned repository. This option implies --pull, even on local repositories.
+
+ By default, clone will check out the head of the 'default' branch. If the
+ -U/--noupdate option is used, the new clone will contain only a repository
+ (.hg) and no working copy (the working copy parent is the null revision).
See 'hg help urls' for valid source format details.
It is possible to specify an ssh:// URL as the destination, but no
- .hg/hgrc and working directory will be created on the remote side.
- Please see 'hg help urls' for important details about ssh:// URLs.
-
- For efficiency, hardlinks are used for cloning whenever the source
- and destination are on the same filesystem (note this applies only
- to the repository data, not to the checked out files). Some
- filesystems, such as AFS, implement hardlinking incorrectly, but
- do not report errors. In these cases, use the --pull option to
- avoid hardlinking.
-
- In some cases, you can clone repositories and checked out files
- using full hardlinks with
+ .hg/hgrc and working directory will be created on the remote side. Please
+ see 'hg help urls' for important details about ssh:// URLs.
+
+ For efficiency, hardlinks are used for cloning whenever the source and
+ destination are on the same filesystem (note this applies only to the
+ repository data, not to the checked out files). Some filesystems, such as
+ AFS, implement hardlinking incorrectly, but do not report errors. In these
+ cases, use the --pull option to avoid hardlinking.
+
+ In some cases, you can clone repositories and checked out files using full
+ hardlinks with
$ cp -al REPO REPOCLONE
- This is the fastest way to clone, but it is not always safe. The
- operation is not atomic (making sure REPO is not modified during
- the operation is up to you) and you have to make sure your editor
- breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,
- this is not compatible with certain extensions that place their
- metadata under the .hg directory, such as mq.
-
+ This is the fastest way to clone, but it is not always safe. The operation
+ is not atomic (making sure REPO is not modified during the operation is up
+ to you) and you have to make sure your editor breaks hardlinks (Emacs and
+ most Linux Kernel tools do so). Also, this is not compatible with certain
+ extensions that place their metadata under the .hg directory, such as mq.
"""
hg.clone(cmdutil.remoteui(ui, opts), source, dest,
pull=opts.get('pull'),
@@ -638,17 +620,17 @@
"""commit the specified files or all outstanding changes
Commit changes to the given files into the repository. Unlike a
- centralized RCS, this operation is a local operation. See hg push
- for a way to actively distribute your changes.
-
- If a list of files is omitted, all changes reported by "hg status"
- will be committed.
-
- If you are committing the result of a merge, do not provide any
- filenames or -I/-X filters.
-
- If no commit message is specified, the configured editor is
- started to prompt you for a message.
+ centralized RCS, this operation is a local operation. See hg push for a
+ way to actively distribute your changes.
+
+ If a list of files is omitted, all changes reported by "hg status" will be
+ committed.
+
+ If you are committing the result of a merge, do not provide any filenames
+ or -I/-X filters.
+
+ If no commit message is specified, the configured editor is started to
+ prompt you for a message.
See 'hg help dates' for a list of formats valid for -d/--date.
"""
@@ -686,16 +668,16 @@
def copy(ui, repo, *pats, **opts):
"""mark files as copied for the next commit
- Mark dest as having copies of source files. If dest is a
- directory, copies are put in that directory. If dest is a file,
- the source must be a single file.
-
- By default, this command copies the contents of files as they
- exist in the working directory. If invoked with -A/--after, the
- operation is recorded, but no copying is performed.
-
- This command takes effect with the next commit. To undo a copy
- before that, see hg revert.
+ Mark dest as having copies of source files. If dest is a directory, copies
+ are put in that directory. If dest is a file, the source must be a single
+ file.
+
+ By default, this command copies the contents of files as they exist in the
+ working directory. If invoked with -A/--after, the operation is recorded,
+ but no copying is performed.
+
+ This command takes effect with the next commit. To undo a copy before
+ that, see hg revert.
"""
wlock = repo.wlock(False)
try:
@@ -798,14 +780,14 @@
With no arguments, print names and values of all config items.
- With one argument of the form section.name, print just the value
- of that config item.
-
- With multiple arguments, print names and values of all config
- items with matching section names.
-
- With --debug, the source (filename and line number) is printed
- for each config item.
+ With one argument of the form section.name, print just the value of that
+ config item.
+
+ With multiple arguments, print names and values of all config items with
+ matching section names.
+
+ With --debug, the source (filename and line number) is printed for each
+ config item.
"""
untrusted = bool(opts.get('untrusted'))
@@ -832,8 +814,8 @@
def debugsetparents(ui, repo, rev1, rev2=None):
"""manually set the parents of the current working directory
- This is useful for writing repository conversion tools, but should
- be used with care.
+ This is useful for writing repository conversion tools, but should be used
+ with care.
"""
if not rev2:
@@ -1067,22 +1049,21 @@
Differences between files are shown using the unified diff format.
- NOTE: diff may generate unexpected results for merges, as it will
- default to comparing against the working directory's first parent
- changeset if no revisions are specified.
-
- 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.
-
- Without the -a/--text option, diff will avoid generating diffs of
- files it detects as binary. With -a, diff will generate a diff
- anyway, probably with undesirable results.
-
- Use the -g/--git option to generate diffs in the git extended diff
- format. For more information, read 'hg help diffs'.
+ NOTE: diff may generate unexpected results for merges, as it will default
+ to comparing against the working directory's first parent changeset if no
+ revisions are specified.
+
+ 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.
+
+ Without the -a/--text option, diff will avoid generating diffs of files it
+ detects as binary. With -a, diff will generate a diff anyway, probably
+ with undesirable results.
+
+ Use the -g/--git option to generate diffs in the git extended diff format.
+ For more information, read 'hg help diffs'.
"""
revs = opts.get('rev')
@@ -1107,15 +1088,14 @@
Print the changeset header and diffs for one or more revisions.
- The information shown in the changeset header is: author,
- changeset hash, parent(s) and commit comment.
-
- NOTE: export may generate unexpected diff output for merge
- changesets, as it will compare the merge changeset against its
- first parent only.
-
- 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:
+ The information shown in the changeset header is: author, changeset hash,
+ parent(s) and commit comment.
+
+ NOTE: export may generate unexpected diff output for merge changesets, as
+ it will compare the merge changeset against its first parent only.
+
+ 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:
%% literal "%" character
%H changeset hash (40 bytes of hexadecimal)
@@ -1126,15 +1106,15 @@
%n zero-padded sequence number, starting at 1
%r zero-padded changeset revision number
- Without the -a/--text option, export will avoid generating diffs
- of files it detects as binary. With -a, export will generate a
- diff anyway, probably with undesirable results.
-
- Use the -g/--git option to generate diffs in the git extended diff
- format. See 'hg help diffs' for more information.
-
- With the --switch-parent option, the diff will be against the
- second parent. It can be useful to review a merge.
+ Without the -a/--text option, export will avoid generating diffs of files
+ it detects as binary. With -a, export will generate a diff anyway,
+ probably with undesirable results.
+
+ Use the -g/--git option to generate diffs in the git extended diff format.
+ See 'hg help diffs' for more information.
+
+ With the --switch-parent option, the diff will be against the second
+ parent. It can be useful to review a merge.
"""
if not changesets:
raise util.Abort(_("export requires at least one changeset"))
@@ -1150,12 +1130,11 @@
def forget(ui, repo, *pats, **opts):
"""forget the specified files on the next commit
- Mark the specified files so they will no longer be tracked
- after the next commit.
-
- This only removes files from the current branch, not from the
- entire project history, and it does not delete them from the
- working directory.
+ Mark the specified files so they will no longer be tracked after the next
+ commit.
+
+ This only removes files from the current branch, not from the entire
+ project history, and it does not delete them from the working directory.
To undo a forget before the next commit, see hg add.
"""
@@ -1184,15 +1163,13 @@
Search revisions of files for a regular expression.
This command behaves differently than Unix grep. It only accepts
- Python/Perl regexps. It searches repository history, not the
- working directory. It always prints the revision number in which a
- match appears.
-
- By default, grep only prints output for the first revision of a
- file in which it finds a match. To get it to print every revision
- that contains a change in match status ("-" for a match that
- becomes a non-match, or "+" for a non-match that becomes a match),
- use the --all flag.
+ Python/Perl regexps. It searches repository history, not the working
+ directory. It always prints the revision number in which a match appears.
+
+ By default, grep only prints output for the first revision of a file in
+ which it finds a match. To get it to print every revision that contains a
+ change in match status ("-" for a match that becomes a non-match, or "+"
+ for a non-match that becomes a match), use the --all flag.
"""
reflags = 0
if opts.get('ignore_case'):
@@ -1366,23 +1343,23 @@
With no arguments, show all repository head changesets.
- Repository "heads" are changesets that don't have child
- changesets. They are where development generally takes place and
- are the usual targets for update and merge operations.
-
- If one or more REV is given, the "branch heads" will be shown for
- the named branch associated with that revision. The name of the
- branch is called the revision's branch tag.
-
- Branch heads are revisions on a given named branch that do not have
- any descendants on the same branch. A branch head could be a true head
- or it could be the last changeset on a branch before a new branch
- was created. If none of the branch heads are true heads, the branch
- is considered inactive. If -c/--closed is specified, also show branch
- heads marked closed (see hg commit --close-branch).
-
- If STARTREV is specified only those heads (or branch heads) that
- are descendants of STARTREV will be displayed.
+ Repository "heads" are changesets that don't have child changesets. They
+ are where development generally takes place and are the usual targets for
+ update and merge operations.
+
+ If one or more REV is given, the "branch heads" will be shown for the
+ named branch associated with that revision. The name of the branch is
+ called the revision's branch tag.
+
+ Branch heads are revisions on a given named branch that do not have any
+ descendants on the same branch. A branch head could be a true head or it
+ could be the last changeset on a branch before a new branch was created.
+ If none of the branch heads are true heads, the branch is considered
+ inactive. If -c/--closed is specified, also show branch heads marked
+ closed (see hg commit --close-branch).
+
+ If STARTREV is specified only those heads (or branch heads) that are
+ descendants of STARTREV will be displayed.
"""
if opts.get('rev'):
start = repo.lookup(opts['rev'])
@@ -1428,8 +1405,8 @@
With no arguments, print a list of commands with short help messages.
- Given a topic, extension, or command name, print help for that
- topic."""
+ Given a topic, extension, or command name, print help for that topic.
+ """
option_lists = []
def addglobalopts(aliases):
@@ -1637,16 +1614,15 @@
rev=None, num=None, id=None, branch=None, tags=None):
"""identify the working copy or specified revision
- With no revision, print a summary of the current state of the
- repository.
-
- Specifying a path to a repository root or Mercurial bundle will
- cause lookup to operate on that repository/bundle.
-
- 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, a list of tags for
- this revision and a branch name for non-default branches.
+ With no revision, print a summary of the current state of the repository.
+
+ Specifying a path to a repository root or Mercurial bundle will cause
+ lookup to operate on that repository/bundle.
+
+ 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, a list of tags for this revision and a branch name for
+ non-default branches.
"""
if not repo and not source:
@@ -1713,33 +1689,31 @@
Import a list of patches and commit them individually.
- If there are outstanding changes in the working directory, import
- will abort unless given the -f/--force flag.
-
- 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 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 may happen due to character set problems or other
- deficiencies in the text patch format.
-
- With -s/--similarity, hg will attempt to discover renames and
- copies in the patch in the same way as 'addremove'.
-
- To read a patch from standard input, use "-" as the patch name. If
- a URL is specified, the patch will be downloaded from it.
- See 'hg help dates' for a list of formats valid for -d/--date.
+ If there are outstanding changes in the working directory, import will
+ abort unless given the -f/--force flag.
+
+ 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 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 may
+ happen due to character set problems or other deficiencies in the text
+ patch format.
+
+ With -s/--similarity, hg will attempt to discover renames and copies in
+ the patch in the same way as 'addremove'.
+
+ To read a patch from standard input, use "-" as the patch name. If a URL
+ is specified, the patch will be downloaded from it. See 'hg help dates'
+ for a list of formats valid for -d/--date.
"""
patches = (patch1,) + patches
@@ -1839,12 +1813,12 @@
def incoming(ui, repo, source="default", **opts):
"""show new changesets found in source
- Show new changesets found in the specified path/URL or the default
- pull location. These are the changesets that would have been pulled
- if a pull at the time you issued this command.
-
- For remote repository, using --bundle avoids downloading the
- changesets twice if the incoming is followed by a pull.
+ Show new changesets found in the specified path/URL or the default pull
+ location. These are the changesets that would have been pulled if a pull
+ at the time you issued this command.
+
+ For remote repository, using --bundle avoids downloading the changesets
+ twice if the incoming is followed by a pull.
See pull for valid source format details.
"""
@@ -1908,33 +1882,33 @@
def init(ui, dest=".", **opts):
"""create a new repository in the given directory
- Initialize a new repository in the given directory. If the given
- directory does not exist, it will be created.
+ Initialize a new repository in the given directory. If the given directory
+ does not exist, it will be created.
If no directory is given, the current directory is used.
- It is possible to specify an ssh:// URL as the destination.
- See 'hg help urls' for more information.
+ It is possible to specify an ssh:// URL as the destination. See 'hg help
+ urls' for more information.
"""
hg.repository(cmdutil.remoteui(ui, opts), dest, create=1)
def locate(ui, repo, *pats, **opts):
"""locate files matching specific patterns
- Print files under Mercurial control in the working directory whose
- names match the given patterns.
+ Print files under Mercurial control in the working directory whose names
+ match the given patterns.
By default, this command searches all directories in the working
- directory. To search just the current directory and its
- subdirectories, use "--include .".
-
- If no patterns are given to match, this command prints the names
- of all files under Mercurial control in the working directory.
-
- If you want to feed the output of this command into the "xargs"
- command, use the -0 option to both this command and "xargs". This
- will avoid the problem of "xargs" treating single filenames that
- contain whitespace as multiple filenames.
+ directory. To search just the current directory and its subdirectories,
+ use "--include .".
+
+ If no patterns are given to match, this command prints the names of all
+ files under Mercurial control in the working directory.
+
+ If you want to feed the output of this command into the "xargs" command,
+ use the -0 option to both this command and "xargs". This will avoid the
+ problem of "xargs" treating single filenames that contain whitespace as
+ multiple filenames.
"""
end = opts.get('print0') and '\0' or '\n'
rev = opts.get('rev') or None
@@ -1956,30 +1930,29 @@
def log(ui, repo, *pats, **opts):
"""show revision history of entire repository or files
- Print the revision history of the specified files or the entire
- project.
-
- File history is shown without following rename or copy history of
- files. Use -f/--follow with a filename to follow history across
- renames and copies. --follow without a filename will only show
- ancestors or descendants of the starting revision. --follow-first
- only follows the first parent of merge revisions.
-
- If no revision range is specified, the default is tip:0 unless
- --follow is set, in which case the working directory parent is
- used as the starting revision.
+ Print the revision history of the specified files or the entire project.
+
+ File history is shown without following rename or copy history of files.
+ Use -f/--follow with a filename to follow history across renames and
+ copies. --follow without a filename will only show ancestors or
+ descendants of the starting revision. --follow-first only follows the
+ first parent of merge revisions.
+
+ If no revision range is specified, the default is tip:0 unless --follow is
+ set, in which case the working directory parent is used as the starting
+ revision.
See 'hg help dates' for a list of formats valid for -d/--date.
- By default this command prints revision number and changeset id,
- tags, non-trivial parents, user, date and time, and a summary for
- each commit. When the -v/--verbose switch is used, the list of
- changed files and full commit message are shown.
+ By default this command prints revision number and changeset id, tags,
+ non-trivial parents, user, date and time, and a summary for each commit.
+ When the -v/--verbose switch is used, the list of changed files and full
+ commit message are shown.
NOTE: log -p/--patch may generate unexpected diff output for merge
- changesets, as it will only compare the merge changeset against
- its first parent. Also, only files different from BOTH parents
- will appear in files:.
+ changesets, as it will only compare the merge changeset against its first
+ parent. Also, only files different from BOTH parents will appear in
+ files:.
"""
get = util.cachefunc(lambda r: repo[r].changeset())
@@ -2082,9 +2055,9 @@
def manifest(ui, repo, node=None, rev=None):
"""output the current or given revision of the project manifest
- Print a list of version controlled files for the given revision.
- If no revision is given, the first parent of the working directory
- is used, or the null revision if no revision is checked out.
+ Print a list of version controlled files for the given revision. If no
+ revision is given, the first parent of the working directory is used, or
+ the null revision if no revision is checked out.
With -v, print file permissions, symlink and executable bits.
With --debug, print file revision hashes.
@@ -2108,18 +2081,17 @@
def merge(ui, repo, node=None, **opts):
"""merge working directory with another revision
- The current working directory is updated with all changes made in
- the requested revision since the last common predecessor revision.
-
- Files that changed between either parent are marked as changed for
- the next commit and a commit must be performed before any further
- updates to the repository are allowed. The next commit will have
- two parents.
-
- If no revision is specified, the working directory's parent is a
- head revision, and the current branch contains exactly one other
- head, the other head is merged with by default. Otherwise, an
- explicit revision with which to merge with must be provided.
+ The current working directory is updated with all changes made in the
+ requested revision since the last common predecessor revision.
+
+ Files that changed between either parent are marked as changed for the
+ next commit and a commit must be performed before any further updates to
+ the repository are allowed. The next commit will have two parents.
+
+ If no revision is specified, the working directory's parent is a head
+ revision, and the current branch contains exactly one other head, the
+ other head is merged with by default. Otherwise, an explicit revision with
+ which to merge with must be provided.
"""
if opts.get('rev') and node:
@@ -2166,9 +2138,9 @@
def outgoing(ui, repo, dest=None, **opts):
"""show changesets not found in destination
- Show changesets not found in the specified destination repository
- or the default push location. These are the changesets that would
- be pushed if a push was requested.
+ Show changesets not found in the specified destination repository or the
+ default push location. These are the changesets that would be pushed if a
+ push was requested.
See pull for valid destination format details.
"""
@@ -2201,11 +2173,10 @@
def parents(ui, repo, file_=None, **opts):
"""show the parents of the working directory or revision
- Print the working directory's parent revisions. If a revision is
- given via -r/--rev, the parent of that revision will be printed.
- If a file argument is given, the revision in which the file was
- last changed (before the working directory revision or the
- argument to --rev if given) is printed.
+ Print the working directory's parent revisions. If a revision is given via
+ -r/--rev, the parent of that revision will be printed. If a file argument
+ is given, the revision in which the file was last changed (before the
+ working directory revision or the argument to --rev if given) is printed.
"""
rev = opts.get('rev')
if rev:
@@ -2241,11 +2212,11 @@
def paths(ui, repo, search=None):
"""show aliases for remote repositories
- Show definition of symbolic path name NAME. If no name is given,
- show definition of all available names.
-
- Path names are defined in the [paths] section of /etc/mercurial/hgrc
- and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
+ Show definition of symbolic path name NAME. If no name is given, show
+ definition of all available names.
+
+ Path names are defined in the [paths] section of /etc/mercurial/hgrc and
+ $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
See 'hg help urls' for more information.
"""
@@ -2278,18 +2249,18 @@
Pull changes from a remote repository to a local one.
- This finds all changes from the repository at the specified path
- or URL and adds them to a local repository (the current one unless
- -R is specified). By default, this does not update the copy of the
- project in the working directory.
-
- Use hg incoming if you want to see what would have been added by a
- pull at the time you issued this command. If you then decide to
- added those changes to the repository, you should use pull -r X
- where X is the last changeset listed by hg incoming.
-
- If SOURCE is omitted, the 'default' path will be used.
- See 'hg help urls' for more information.
+ This finds all changes from the repository at the specified path or URL
+ and adds them to a local repository (the current one unless -R is
+ specified). By default, this does not update the copy of the project in
+ the working directory.
+
+ Use hg incoming if you want to see what would have been added by a pull at
+ the time you issued this command. If you then decide to added those
+ changes to the repository, you should use pull -r X where X is the last
+ changeset listed by hg incoming.
+
+ If SOURCE is omitted, the 'default' path will be used. See 'hg help urls'
+ for more information.
"""
source, revs, checkout = hg.parseurl(ui.expandpath(source), opts.get('rev'))
other = hg.repository(cmdutil.remoteui(repo, opts), source)
@@ -2310,20 +2281,19 @@
Push changes from the local repository to the given destination.
- This is the symmetrical operation for pull. It moves 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.
+ This is the symmetrical operation for pull. It moves 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.
By default, push will refuse to run if it detects the result would
- increase the number of remote heads. This generally indicates the
- user forgot to pull and merge before pushing.
-
- If -r/--rev is used, the named revision and all its ancestors will
- be pushed to the remote repository.
-
- Please see 'hg help urls' for important details about ssh://
- URLs. If DESTINATION is omitted, a default path will be used.
+ increase the number of remote heads. This generally indicates the user
+ forgot to pull and merge before pushing.
+
+ If -r/--rev is used, the named revision and all its ancestors will be
+ pushed to the remote repository.
+
+ Please see 'hg help urls' for important details about ssh:// URLs. If
+ DESTINATION is omitted, a default path will be used.
"""
dest, revs, checkout = hg.parseurl(
ui.expandpath(dest or 'default-push', dest or 'default'), opts.get('rev'))
@@ -2346,9 +2316,8 @@
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.
+ This command tries to fix the repository status after an interrupted
+ operation. It should only be necessary when Mercurial suggests it.
"""
if repo.recover():
return hg.verify(repo)
@@ -2359,17 +2328,16 @@
Schedule the indicated files for removal from the repository.
- This only removes files from the current branch, not from the
- entire project history. -A/--after can be used to remove only
- files that have already been deleted, -f/--force can be used to
- force deletion, and -Af can be used to remove files from the next
- revision without deleting them from the working directory.
-
- The following table details the behavior of remove for different
- file states (columns) and option combinations (rows). The file
- states are Added [A], Clean [C], Modified [M] and Missing [!]
- (as reported by hg status). The actions are Warn, Remove (from
- branch) and Delete (from disk).
+ This only removes files from the current branch, not from the entire
+ project history. -A/--after can be used to remove only files that have
+ already been deleted, -f/--force can be used to force deletion, and -Af
+ can be used to remove files from the next revision without deleting them
+ from the working directory.
+
+ The following table details the behavior of remove for different file
+ states (columns) and option combinations (rows). The file states are Added
+ [A], Clean [C], Modified [M] and Missing [!] (as reported by hg status).
+ The actions are Warn, Remove (from branch) and Delete (from disk).
A C M !
none W RD W R
@@ -2377,8 +2345,8 @@
-A W W W R
-Af R R R R
- This command schedules the files to be removed at the next commit.
- To undo a remove before that, see hg revert.
+ This command schedules the files to be removed at the next commit. To undo
+ a remove before that, see hg revert.
"""
after, force = opts.get('after'), opts.get('force')
@@ -2418,16 +2386,16 @@
def rename(ui, repo, *pats, **opts):
"""rename files; equivalent of copy + remove
- Mark dest as copies of sources; mark sources for deletion. If dest
- is a directory, copies are put in that directory. If dest is a
- file, there can only be one source.
-
- By default, this command copies the contents of files as they
- exist in the working directory. If invoked with -A/--after, the
- operation is recorded, but no copying is performed.
-
- This command takes effect at the next commit. To undo a rename
- before that, see hg revert.
+ Mark dest as copies of sources; mark sources for deletion. If dest is a
+ directory, copies are put in that directory. If dest is a file, there can
+ only be one source.
+
+ By default, this command copies the contents of files as they exist in the
+ working directory. If invoked with -A/--after, the operation is recorded,
+ but no copying is performed.
+
+ This command takes effect at the next commit. To undo a rename before
+ that, see hg revert.
"""
wlock = repo.wlock(False)
try:
@@ -2439,16 +2407,16 @@
"""retry file merges from a merge or update
This command will cleanly retry unresolved file merges using file
- revisions preserved from the last update or merge. To attempt to
- resolve all unresolved files, use the -a/--all switch.
-
- If a conflict is resolved manually, please note that the changes
- will be overwritten if the merge is retried with resolve. The
- -m/--mark switch should be used to mark the file as resolved.
-
- This command also allows listing resolved files and manually
- indicating whether or not files are resolved. All files must be
- marked as resolved before a commit is permitted.
+ revisions preserved from the last update or merge. To attempt to resolve
+ all unresolved files, use the -a/--all switch.
+
+ If a conflict is resolved manually, please note that the changes will be
+ overwritten if the merge is retried with resolve. The -m/--mark switch
+ should be used to mark the file as resolved.
+
+ This command also allows listing resolved files and manually indicating
+ whether or not files are resolved. All files must be marked as resolved
+ before a commit is permitted.
The codes used to show the status of files are:
U = unresolved
@@ -2493,35 +2461,33 @@
def revert(ui, repo, *pats, **opts):
"""restore individual files or directories to an earlier state
- (Use update -r to check out earlier revisions, revert does not
- change the working directory parents.)
-
- With no revision specified, revert the named files or directories
- to the contents they had in the parent of the working directory.
- This restores the contents of the affected files to an unmodified
- state and unschedules adds, removes, copies, and renames. If the
- working directory has two parents, you must explicitly specify the
- revision to revert to.
-
- Using the -r/--rev option, revert the given files or directories
- to their contents as of a specific revision. This can be helpful
- to "roll back" some or all of an earlier change. See 'hg help
- dates' for a list of formats valid for -d/--date.
-
- Revert modifies the working directory. It does not commit any
- changes, or change the parent of the working directory. If you
- revert to a revision other than the parent of the working
- directory, the reverted files will thus appear modified
- afterwards.
-
- If a file has been deleted, it is restored. If the executable mode
- of a file was changed, it is reset.
-
- If names are given, all files matching the names are reverted.
- If no arguments are given, no files are reverted.
-
- Modified files are saved with a .orig suffix before reverting.
- To disable these backups, use --no-backup.
+ (Use update -r to check out earlier revisions, revert does not change the
+ working directory parents.)
+
+ With no revision specified, revert the named files or directories to the
+ contents they had in the parent of the working directory. This restores
+ the contents of the affected files to an unmodified state and unschedules
+ adds, removes, copies, and renames. If the working directory has two
+ parents, you must explicitly specify the revision to revert to.
+
+ Using the -r/--rev option, revert the given files or directories to their
+ contents as of a specific revision. This can be helpful to "roll back"
+ some or all of an earlier change. See 'hg help dates' for a list of
+ formats valid for -d/--date.
+
+ Revert modifies the working directory. It does not commit any changes, or
+ change the parent of the working directory. If you revert to a revision
+ other than the parent of the working directory, the reverted files will
+ thus appear modified afterwards.
+
+ If a file has been deleted, it is restored. If the executable mode of a
+ file was changed, it is reset.
+
+ If names are given, all files matching the names are reverted. If no
+ arguments are given, no files are reverted.
+
+ Modified files are saved with a .orig suffix before reverting. To disable
+ these backups, use --no-backup.
"""
if opts["date"]:
@@ -2710,15 +2676,14 @@
"""roll back the last transaction
This command should be used with care. There is only one level of
- rollback, and there is no way to undo a rollback. It will also
- restore the dirstate at the time of the last transaction, losing
- any dirstate changes since that time. This command does not alter
- the working directory.
-
- Transactions are used to encapsulate the effects of all commands
- that create new changesets or propagate existing changesets into a
- repository. For example, the following commands are transactional,
- and their effects can be rolled back:
+ rollback, and there is no way to undo a rollback. It will also restore the
+ dirstate at the time of the last transaction, losing any dirstate changes
+ since that time. This command does not alter the working directory.
+
+ Transactions are used to encapsulate the effects of all commands that
+ create new changesets or propagate existing changesets into a repository.
+ For example, the following commands are transactional, and their effects
+ can be rolled back:
commit
import
@@ -2726,12 +2691,12 @@
push (with this repository as destination)
unbundle
- This command is not intended for use on public repositories. Once
- changes are visible for pull by other users, rolling a transaction
- back locally is ineffective (someone else may already have pulled
- the changes). Furthermore, a race is possible with readers of the
- repository; for example an in-progress pull from the repository
- may fail if a rollback is performed.
+ This command is not intended for use on public repositories. Once changes
+ are visible for pull by other users, rolling a transaction back locally is
+ ineffective (someone else may already have pulled the changes).
+ Furthermore, a race is possible with readers of the repository; for
+ example an in-progress pull from the repository may fail if a rollback is
+ performed.
"""
repo.rollback()
@@ -2747,9 +2712,8 @@
Start a local HTTP repository browser and pull server.
- By default, the server logs accesses to stdout and errors to
- stderr. Use the -A/--accesslog and -E/--errorlog options to log to
- files.
+ By default, the server logs accesses to stdout and errors to stderr. Use
+ the -A/--accesslog and -E/--errorlog options to log to files.
"""
if opts["stdio"]:
@@ -2810,24 +2774,22 @@
def status(ui, repo, *pats, **opts):
"""show changed files in the working directory
- Show status of files in the repository. If names are given, only
- files that match are shown. Files that are clean or ignored or
- the source of a copy/move operation, are not listed unless
- -c/--clean, -i/--ignored, -C/--copies or -A/--all are given.
- Unless options described with "show only ..." are given, the
- options -mardu are used.
-
- Option -q/--quiet hides untracked (unknown and ignored) files
- unless explicitly requested with -u/--unknown or -i/--ignored.
-
- NOTE: status may appear to disagree with diff if permissions have
- changed or a merge has occurred. The standard diff format does not
- report permission changes and diff only reports changes relative
- to one merge parent.
-
- If one revision is given, it is used as the base revision.
- If two revisions are given, the differences between them are
- shown.
+ Show status of files in the repository. If names are given, only files
+ that match are shown. Files that are clean or ignored or the source of a
+ copy/move operation, are not listed unless -c/--clean, -i/--ignored,
+ -C/--copies or -A/--all are given. Unless options described with "show
+ only ..." are given, the options -mardu are used.
+
+ Option -q/--quiet hides untracked (unknown and ignored) files unless
+ explicitly requested with -u/--unknown or -i/--ignored.
+
+ NOTE: status may appear to disagree with diff if permissions have changed
+ or a merge has occurred. The standard diff format does not report
+ permission changes and diff only reports changes relative to one merge
+ parent.
+
+ If one revision is given, it is used as the base revision. If two
+ revisions are given, the differences between them are shown.
The codes used to show the status of files are:
M = modified
@@ -2885,18 +2847,17 @@
Name a particular revision using <name>.
- Tags are used to name particular revisions of the repository and are
- very useful to compare different revisions, to go back to significant
- earlier versions or to mark branch points as releases, etc.
-
- If no revision is given, the parent of the working directory is
- used, or tip if no revision is checked out.
-
- 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. The file '.hg/localtags' is used for local tags (not
- shared among repositories).
+ Tags are used to name particular revisions of the repository and are very
+ useful to compare different revisions, to go back to significant earlier
+ versions or to mark branch points as releases, etc.
+
+ If no revision is given, the parent of the working directory is used, or
+ tip if no revision is checked out.
+
+ 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. The file
+ '.hg/localtags' is used for local tags (not shared among repositories).
See 'hg help dates' for a list of formats valid for -d/--date.
"""
@@ -2949,8 +2910,8 @@
def tags(ui, repo):
"""list repository tags
- This lists both regular and local tags. When the -v/--verbose
- switch is used, a third column "local" is printed for local tags.
+ This lists both regular and local tags. When the -v/--verbose switch is
+ used, a third column "local" is printed for local tags.
"""
hexfunc = ui.debugflag and hex or short
@@ -2978,22 +2939,22 @@
def tip(ui, repo, **opts):
"""show the tip revision
- The tip revision (usually just called the tip) is the changeset
- most recently added to the repository (and therefore the most
- recently changed head).
-
- If you have just made a commit, that commit will be the tip. If
- you have just pulled changes from another repository, the tip of
- that repository becomes the current tip. The "tip" tag is special
- and cannot be renamed or assigned to a different changeset.
+ The tip revision (usually just called the tip) is the changeset most
+ recently added to the repository (and therefore the most recently changed
+ head).
+
+ If you have just made a commit, that commit will be the tip. If you have
+ just pulled changes from another repository, the tip of that repository
+ becomes the current tip. The "tip" tag is special and cannot be renamed or
+ assigned to a different changeset.
"""
cmdutil.show_changeset(ui, repo, opts).show(repo[len(repo) - 1])
def unbundle(ui, repo, fname1, *fnames, **opts):
"""apply one or more changegroup files
- Apply one or more compressed changegroup files generated by the
- bundle command.
+ Apply one or more compressed changegroup files generated by the bundle
+ command.
"""
fnames = (fname1,) + fnames
@@ -3011,31 +2972,27 @@
def update(ui, repo, node=None, rev=None, clean=False, date=None, check=False):
"""update working directory
- Update the repository's working directory to the specified
- revision, or the tip of the current branch if none is specified.
- Use null as the revision to remove the working copy (like 'hg
- clone -U').
-
- When the working directory contains no uncommitted changes, it
- will be replaced by the state of the requested revision from the
- repository. When the requested revision is on a different branch,
- the working directory will additionally be switched to that
- branch.
-
- When there are uncommitted changes, use option -C/--clean to
- discard them, forcibly replacing the state of the working
- directory with the requested revision. Alternately, use -c/--check
- to abort.
-
- When there are uncommitted changes and option -C/--clean is not
- used, and the parent revision and requested revision are on the
- same branch, and one of them is an ancestor of the other, then the
- new working directory will contain the requested revision merged
- with the uncommitted changes. Otherwise, the update will fail with
- a suggestion to use 'merge' or 'update -C' instead.
-
- If you want to update just one file to an older revision, use
- revert.
+ Update the repository's working directory to the specified revision, or
+ the tip of the current branch if none is specified. Use null as the
+ revision to remove the working copy (like 'hg clone -U').
+
+ When the working directory contains no uncommitted changes, it will be
+ replaced by the state of the requested revision from the repository. When
+ the requested revision is on a different branch, the working directory
+ will additionally be switched to that branch.
+
+ When there are uncommitted changes, use option -C/--clean to discard them,
+ forcibly replacing the state of the working directory with the requested
+ revision. Alternately, use -c/--check to abort.
+
+ When there are uncommitted changes and option -C/--clean is not used, and
+ the parent revision and requested revision are on the same branch, and one
+ of them is an ancestor of the other, then the new working directory will
+ contain the requested revision merged with the uncommitted changes.
+ Otherwise, the update will fail with a suggestion to use 'merge' or
+ 'update -C' instead.
+
+ If you want to update just one file to an older revision, use revert.
See 'hg help dates' for a list of formats valid for -d/--date.
"""
@@ -3066,10 +3023,10 @@
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.
+ 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.
"""
return hg.verify(repo)