マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

hg (1)

名前

hg - Mercurial source code management system

形式

hg command [option]... [argument]...

説明




Mercurial Manual                                            HG(1)



NAME
     hg - Mercurial source code management system

SYNOPSIS
     hg command [option]... [argument]...

DESCRIPTION
     The hg command provides a command line interface to the Mer-
     curial system.

COMMAND ELEMENTS
     files...
          indicates one or more filename or relative  path  file-
          names;  see  File Name Patterns for information on pat-
          tern matching

     path indicates a path on the local machine

     revision
          indicates a changeset  which  can  be  specified  as  a
          changeset revision number, a tag, or a unique substring
          of the changeset hash value

     repository path
          either the pathname of a local repository or the URI of
          a remote repository.

OPTIONS
     -R, --repository
          repository  root  directory  or  name of overlay bundle
          file

     --cwd
          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

     --config
          set/override config option (use 'section.name=value')

     --debug
          enable debugging output

     --debugger



SunOS 5.11                Last change:                          1






Mercurial Manual                                            HG(1)



          start debugger

     --encoding
          set the charset encoding (default: UTF-8)

     --encodingmode
          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

COMMANDS
  add
     hg add [OPTION]... [FILE]...

     Schedule  files  to  be  version controlled and added to the
     repository.

     The files will be added to the repository at the  next  com-
     mit. To undo an add before that, see hg forget.

     If no names are given, add all files to the repository.

     An  example  showing how new (unknown) files are added auto-
     matically by hg add:

     $ ls
     foo.c
     $ hg status
     ? foo.c
     $ hg add
     adding foo.c
     $ hg status
     A foo.c

     Returns 0 if all files are successfully added.




SunOS 5.11                Last change:                          2






Mercurial Manual                                            HG(1)



     Options:

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -S, --subrepos
          recurse into subrepositories

     -n, --dry-run
          do not perform actions, just print output

  addremove
     hg addremove [OPTION]... [FILE]...

     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. This
     option takes a  percentage  between  0  (disabled)  and  100
     (files must be identical) as its parameter. With a parameter
     greater than 0, this compares every removed file with  every
     added  file  and  records  those  similar enough as renames.
     Detecting renamed files this way  can  be  expensive.  After
     using  this  option, hg status -C can be used to check which
     files were identified as moved or renamed. If not specified,
     -s/--similarity  defaults to 100 and only renames of identi-
     cal files are detected.

     Returns 0 if all files are successfully added.

     Options:

     -s, --similarity
          guess renamed files by similarity (0<=s<=100)

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -n, --dry-run
          do not perform actions, just print output





SunOS 5.11                Last change:                          3






Mercurial Manual                                            HG(1)



  annotate
     hg annotate [-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] 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  nei-
     ther useful nor desirable.

     Returns 0 on success.

     Options:

     -r, --rev
          annotate the specified revision

     --follow
          follow  copies/renames  and  list  the filename (DEPRE-
          CATED)

     --no-follow
          don't follow copies and renames

     -a, --text
          treat all files as text

     -u, --user
          list the author (long with -v)

     -f, --file
          list the filename

     -d, --date
          list the date (short with -q)

     -n, --number
          list the revision number (default)

     -c, --changeset
          list the changeset

     -l, --line-number
          show line number at the first appearance

     -w, --ignore-all-space
          ignore white space when comparing lines




SunOS 5.11                Last change:                          4






Mercurial Manual                                            HG(1)



     -b, --ignore-space-change
          ignore changes in the amount of white space

     -B, --ignore-blank-lines
          ignore changes whose lines are all blank

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

          aliases: blame

  archive
     hg archive [OPTION]... DEST

     By default, the revision used is the parent of  the  working
     directory; use -r/--rev to specify a different revision.

     The  archive  type  is  automatically detected based on file
     extension (or override using -t/--type).

     Examples:

     o create a zip file containing the 1.0 release:

       hg archive -r 1.0 project-1.0.zip

     o create a tarball excluding .hg files:

       hg archive project.tar.gz -X ".hg*"

     Valid types are:

     files

          a directory full of files (default)

     tar

          tar archive, uncompressed

     tbz2

          tar archive, compressed using bzip2

     tgz

          tar archive, compressed using gzip

     uzip



SunOS 5.11                Last change:                          5






Mercurial Manual                                            HG(1)



          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.

     Returns 0 on success.

     Options:

     --no-decode
          do not pass files through decoders

     -p, --prefix
          directory prefix for files in archive

     -r, --rev
          revision to distribute

     -t, --type
          type of distribution to create

     -S, --subrepos
          recurse into subrepositories

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  backout
     hg backout [OPTION]... [-r] REV

     Prepare a new changeset with the effect of REV undone in the
     current working directory.

     If REV is the parent of the working directory, then this new
     changeset is committed automatically. Otherwise, hg needs to
     merge the changes and the merged result is left uncommitted.

     Note backout  cannot  be  used  to fix either an unwanted or
          incorrect merge.




SunOS 5.11                Last change:                          6






Mercurial Manual                                            HG(1)



     By default, the pending  changeset  will  have  one  parent,
     maintaining  a  linear  history.  With  --merge, the pending
     changeset will instead have two parents: the old  parent  of
     the  working  directory  and  a new child of REV that simply
     undoes REV.

     Before version 1.7, the behavior without --merge was equiva-
     lent  to  specifying --merge followed by hg update --clean .
     to cancel the merge and leave the child of REV as a head  to
     be merged separately.

     See hg help dates for a list of formats valid for -d/--date.

     Returns 0 on success.

     Options:

     --merge
          merge with old dirstate parent after backout

     --parent
          parent to choose when backing out merge (DEPRECATED)

     -r, --rev
          revision to backout

     -t, --tool
          specify merge tool

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

  bisect
     hg bisect [-gbsr] [-U] [-c CMD] [REV]

     This command helps to find changesets which introduce  prob-
     lems.  To use, mark the earliest changeset you know exhibits



SunOS 5.11                Last change:                          7






Mercurial Manual                                            HG(1)



     the problem as bad, then mark the latest changeset which  is
     free from the problem as good. Bisect will update your work-
     ing  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.   The  environment  variable HG_NODE will contain
     the ID of the changeset being tested. The exit status of the
     command  will be used to mark revisions as good or bad: sta-
     tus 0 means good, 125 means to skip the revision, 127  (com-
     mand  not  found)  will  abort  the bisection, and any other
     non-zero exit status means the revision is bad.

     Some examples:

     o start a bisection with known bad  revision  34,  and  good
       revision 12:

       hg bisect --bad 34
       hg bisect --good 12

     o advance  the current bisection by marking current revision
       as good or bad:

       hg bisect --good
       hg bisect --bad

     o mark the current revision, or  a  known  revision,  to  be
       skipped  (e.g.  if  that revision is not usable because of
       another issue):

       hg bisect --skip
       hg bisect --skip 23

     o skip all revisions that do not touch  directories  foo  or
       bar:

       hg bisect --skip "!( file('path:foo') & file('path:bar') )"

     o forget the current bisection:

       hg bisect --reset

     o use  'make  && make tests' to automatically find the first
       broken revision:



SunOS 5.11                Last change:                          8






Mercurial Manual                                            HG(1)



       hg bisect --reset
       hg bisect --bad 34
       hg bisect --good 12
       hg bisect --command "make && make tests"

     o see all changesets whose states are already known  in  the
       current bisection:

       hg log -r "bisect(pruned)"

     o see  the  changeset  currently  being bisected (especially
       useful if running with -U/--noupdate):

       hg log -r "bisect(current)"

     o see all changesets that took part in  the  current  bisec-
       tion:

       hg log -r "bisect(range)"

     o you can even get a nice graph:

       hg log --graph -r "bisect(range)"

     See hg help revsets for more about the bisect() keyword.

     Returns 0 on success.

     Options:

     -r, --reset
          reset bisect state

     -g, --good
          mark changeset good

     -b, --bad
          mark changeset bad

     -s, --skip
          skip testing changeset

     -e, --extend
          extend the bisect range

     -c, --command
          use command to check changeset state

     -U, --noupdate
          do not update to target





SunOS 5.11                Last change:                          9






Mercurial Manual                                            HG(1)



  bookmarks
     hg bookmarks [OPTIONS]... [NAME]...

     Bookmarks  are  pointers  to  certain commits that move when
     committing.  Bookmarks  are  local.  They  can  be  renamed,
     copied  and  deleted. It is possible to use hg merge NAME to
     merge from a given bookmark, and hg update NAME to update to
     a given bookmark.

     You  can use hg bookmark NAME to set a bookmark on the work-
     ing directory's parent revision with the given name. If  you
     specify  a revision using -r REV (where REV may be an exist-
     ing bookmark), the bookmark is assigned to that revision.

     Bookmarks can be pushed and pulled between repositories (see
     hg help push and hg help pull). This requires both the local
     and remote repositories to support bookmarks.  For  versions
     prior  to  1.8,  this  means the bookmarks extension must be
     enabled.

     If you set a bookmark called '@', new clones of the  reposi-
     tory  will  have that revision checked out (and the bookmark
     made active) by default.

     With -i/--inactive, the new bookmark will not  be  made  the
     active bookmark. If -r/--rev is given, the new bookmark will
     not be made active even if -i/--inactive is not given. If no
     NAME  is  given,  the current active bookmark will be marked
     inactive.

     Options:

     -f, --force
          force

     -r, --rev
          revision

     -d, --delete
          delete a given bookmark

     -m, --rename
          rename a given bookmark

     -i, --inactive
          mark a bookmark inactive

          aliases: bookmark

  branch
     hg branch [-fC] [NAME]




SunOS 5.11                Last change:                         10






Mercurial Manual                                            HG(1)



     Note Branch names are permanent and global. Use hg  bookmark
          to  create a light-weight bookmark instead. See hg help
          glossary for more information about named branches  and
          bookmarks.

     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.

     Returns 0 on success.

     Options:

     -f, --force
          set branch name even if it shadows an existing branch

     -C, --clean
          reset branch name to parent branch name

  branches
     hg branches [-ac]

     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.

     Returns 0.

     Options:

     -a, --active
          show only branches that have unmerged heads

     -c, --closed



SunOS 5.11                Last change:                         11






Mercurial Manual                                            HG(1)



          show normal and closed branches

  bundle
     hg bundle [-f] [-t TYPE] [-a] [-r REV]... [--base REV]... FILE [DEST]

     Generate a compressed changegroup file collecting changesets
     not known to be in another repository.

     If you omit the destination repository, then hg assumes  the
     destination  will have all the nodes you specify with --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.

     Returns 0 on success, 1 if no changes found.

     Options:

     -f, --force
          run even when the destination is unrelated

     -r, --rev
          a changeset intended to be added to the destination

     -b, --branch
          a specific branch you would like to bundle

     --base
          a  base changeset assumed to be available at the desti-
          nation

     -a, --all
          bundle all changesets in the repository

     -t, --type
          bundle compression type to use (default: bzip2)

     -e, --ssh
          specify ssh command to use




SunOS 5.11                Last change:                         12






Mercurial Manual                                            HG(1)



     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)

  cat
     hg cat [OPTION]... FILE...

     Print  the  specified  files as they were at the given revi-
     sion. If no revision is given, the  parent  of  the  working
     directory is used.

     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 addi-
     tions:

     %s

          basename of file being printed

     %d

          dirname of file being printed, or '.' if in  repository
          root

     %p

          root-relative path name of file being printed

     Returns 0 on success.

     Options:

     -o, --output
          print output to file with formatted name

     -r, --rev
          print the given revision

     --decode
          apply any matching decode filter

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns





SunOS 5.11                Last change:                         13






Mercurial Manual                                            HG(1)



  clone
     hg clone [OPTION]... SOURCE [DEST]

     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.

     Only local paths and ssh:// URLs are supported  as  destina-
     tions.  For  ssh://  destinations,  no  working directory or
     .hg/hgrc will be created on the remote side.

     To pull only a subset of changesets,  specify  one  or  more
     revisions   identifiers   with  -r/--rev  or  branches  with
     -b/--branch. The resulting clone will contain only the spec-
     ified  changesets  and  their  ancestors.  These options (or
     'clone src#rev dest') imply --pull, even  for  local  source
     repositories.  Note  that  specifying a tag will include the
     tagged changeset but not the changeset containing the tag.

     If the source repository has a bookmark called '@' set, that
     revision  will  be  checked  out  in  the  new repository by
     default.

     To check out  a  particular  version,  use  -u/--update,  or
     -U/--noupdate to create a clone with no working directory.

     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 working
     directory).  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  the  working
     directory 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  modi-
     fied during the operation is up to you) and you have to make
     sure your editor breaks hardlinks (Emacs and most Linux Ker-
     nel  tools do so). Also, this is not compatible with certain
     extensions that place their metadata under  the  .hg  direc-
     tory, such as mq.

     Mercurial  will  update  the  working directory to the first
     applicable revision from this list:



SunOS 5.11                Last change:                         14






Mercurial Manual                                            HG(1)



     a. null if -U or the source repository has no changesets

     b. if -u . and the source repository  is  local,  the  first
        parent of the source repository's working directory

     c. the  changeset  specified with -u (if a branch name, this
        means the latest head of that branch)

     d. the changeset specified with -r

     e. the tipmost head specified with -b

     f. the tipmost head specified  with  the  url#branch  source
        syntax

     g. the revision marked with the '@' bookmark, if present

     h. the tipmost head of the default branch

     i. tip

     Examples:

     o clone a remote repository to a new directory named hg/:

       hg clone http://selenic.com/hg

     o create a lightweight local clone:

       hg clone project/ project-feature/

     o clone  from  an  absolute path on an ssh server (note dou-
       ble-slash):

       hg clone ssh://user@server//home/projects/alpha/

     o do a high-speed clone over a  LAN  while  checking  out  a
       specified version:

       hg clone --uncompressed http://server/repo -u 1.5

     o create  a repository without changesets after a particular
       revision:

       hg clone -r 04e544 experimental/ good/

     o clone (and track) a particular named branch:

       hg clone http://selenic.com/hg#stable

     See hg help urls for details on specifying URLs.




SunOS 5.11                Last change:                         15






Mercurial Manual                                            HG(1)



     Returns 0 on success.

     Options:

     -U, --noupdate
          the clone will include an empty working  copy  (only  a
          repository)

     -u, --updaterev
          revision, tag or branch to check out

     -r, --rev
          include the specified changeset

     -b, --branch
          clone only the specified branch

     --pull
          use pull protocol to copy metadata

     --uncompressed
          use uncompressed transfer (fast over LAN)

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do  not verify server certificate (ignoring web.cacerts
          config)

  commit
     hg commit [OPTION]... [FILE]...

     Commit changes to  the  given  files  into  the  repository.
     Unlike  a  centralized SCM, this operation is a local opera-
     tion. 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, Mercurial starts your
     configured editor where you can enter  a  message.  In  case
     your commit fails, you will find a backup of your message in
     .hg/last-message.txt.




SunOS 5.11                Last change:                         16






Mercurial Manual                                            HG(1)



     The --amend flag can be used to  amend  the  parent  of  the
     working  directory  with  a  new  commit  that  contains the
     changes  in  the  parent  in  addition  to  those  currently
     reported  by  hg status, if there are any. The old commit is
     stored in a backup bundle in .hg/strip-backup (see  hg  help
     bundle and hg help unbundle on how to restore it).

     Message,  user  and  date  are taken from the amended commit
     unless specified. When a message isn't specified on the com-
     mand  line,  the  editor  will  open with the message of the
     amended commit.

     It is not possible to amend public changesets (see  hg  help
     phases) or changesets that have children.

     See hg help dates for a list of formats valid for -d/--date.

     Returns 0 on success, 1 if nothing changed.

     Options:

     -A, --addremove
          mark new/missing files as added/removed before  commit-
          ting

     --close-branch
          mark a branch as closed, hiding it from the branch list

     --amend
          amend the parent of the working dir

     -s, --secret
          use the secret phase for committing

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer




SunOS 5.11                Last change:                         17






Mercurial Manual                                            HG(1)



     -S, --subrepos
          recurse into subrepositories

          aliases: ci

  copy
     hg copy [OPTION]... [SOURCE]... DEST

     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.

     Returns 0 on success, 1 if errors are encountered.

     Options:

     -A, --after
          record a copy that has already occurred

     -f, --force
          forcibly copy over an existing managed file

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -n, --dry-run
          do not perform actions, just print output

          aliases: cp

  diff
     hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...

     Show differences between revisions for the specified  files.

     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 direc-
          tory's first  parent  changeset  if  no  revisions  are



SunOS 5.11                Last change:                         18






Mercurial Manual                                            HG(1)



          specified.

     When  two  revision  arguments  are  given, then changes are
     shown between those revisions. If only one revision is spec-
     ified  then  that revision is compared to the working direc-
     tory, and, when no  revisions  are  specified,  the  working
     directory files are compared to its parent.

     Alternatively you can specify -c/--change with a revision to
     see the changes in that changeset relative to its first par-
     ent.

     Without  the  -a/--text  option,  diff will avoid generating
     diffs of files it detects as binary. With -a, diff will gen-
     erate 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.

     Examples:

     o compare  a  file  in  the current working directory to its
       parent:

       hg diff foo.c

     o compare two  historical  versions  of  a  directory,  with
       rename info:

       hg diff --git -r 1.0:1.2 lib/

     o get change stats relative to the last change on some date:

       hg diff --stat -r "date('may 2')"

     o diff all newly-added files that contain a keyword:

       hg diff "set:added() and grep(GNU)"

     o compare a revision and its parents:

       hg diff -c 9353         # compare against first parent
       hg diff -r 9353^:9353   # same using revset syntax
       hg diff -r 9353^2:9353  # compare against the second parent

     Returns 0 on success.

     Options:

     -r, --rev
          revision



SunOS 5.11                Last change:                         19






Mercurial Manual                                            HG(1)



     -c, --change
          change made by revision

     -a, --text
          treat all files as text

     -g, --git
          use git extended diff format

     --nodates
          omit dates from diff headers

     -p, --show-function
          show which function each change is in

     --reverse
          produce a diff that undoes the changes

     -w, --ignore-all-space
          ignore white space when comparing lines

     -b, --ignore-space-change
          ignore changes in the amount of white space

     -B, --ignore-blank-lines
          ignore changes whose lines are all blank

     -U, --unified
          number of lines of context to show

     --stat
          output diffstat-style summary of changes

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -S, --subrepos
          recurse into subrepositories

  export
     hg export [OPTION]... [-o OUTFILESPEC] [-r] [REV]...

     Print the changeset header and diffs for one or  more  revi-
     sions.   If  no revision is given, the parent of the working
     directory is used.

     The information shown in the changeset  header  is:  author,
     date,  branch  name  (if  non-default), changeset hash, par-
     ent(s) and commit comment.



SunOS 5.11                Last change:                         20






Mercurial Manual                                            HG(1)



     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 hexadecimal digits)

     %N

          number of patches being generated

     %R

          changeset revision number

     %b

          basename of the exporting repository

     %h

          short-form changeset hash (12 hexadecimal digits)

     %m

          first line of the  commit  message  (only  alphanumeric
          characters)

     %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  informa-
     tion.



SunOS 5.11                Last change:                         21






Mercurial Manual                                            HG(1)



     With  the  --switch-parent  option, the diff will be against
     the second parent. It can be useful to review a merge.

     Examples:

     o use export and import to transplant a bugfix to  the  cur-
       rent branch:

       hg export -r 9353 | hg import -

     o export  all the changesets between two revisions to a file
       with rename information:

       hg export --git -r 123:150 > changes.txt

     o split outgoing changes  into  a  series  of  patches  with
       descriptive names:

       hg export -r "outgoing()" -o "%n-%m.patch"

     Returns 0 on success.

     Options:

     -o, --output
          print output to file with formatted name

     --switch-parent
          diff against the second parent

     -r, --rev
          revisions to export

     -a, --text
          treat all files as text

     -g, --git
          use git extended diff format

     --nodates
          omit dates from diff headers

  forget
     hg forget [OPTION]... FILE...

     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.




SunOS 5.11                Last change:                         22






Mercurial Manual                                            HG(1)



     To undo a forget before the next commit, see hg add.

     Examples:

     o forget newly-added binary files:

       hg forget "set:added() and binary()"

     o forget files that would be excluded by .hgignore:

       hg forget "set:hgignore()"

     Returns 0 on success.

     Options:

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  graft
     hg graft [OPTION]... [-r] REV...

     This command uses Mercurial's merge logic to copy individual
     changes  from other branches without merging branches in the
     history graph. This is sometimes known as  'backporting'  or
     'cherry-picking'.  By  default,  graft will copy user, date,
     and description from the source changesets.

     Changesets that are ancestors of the current revision,  that
     have  already  been  grafted,  or  that  are  merges will be
     skipped.

     If --log is specified, log  messages  will  have  a  comment
     appended of the form:

     (grafted from CHANGESETHASH)

     If  a graft merge results in conflicts, the graft process is
     interrupted so  that  the  current  merge  can  be  manually
     resolved.   Once  all  conflicts  are  addressed,  the graft
     process can be continued with the -c/--continue option.

     Note The  -c/--continue  option  does  not  reapply  earlier
          options.

     Examples:

     o copy  a  single  change  to the stable branch and edit its
       description:



SunOS 5.11                Last change:                         23






Mercurial Manual                                            HG(1)



       hg update stable
       hg graft --edit 9393

     o graft a range of changesets with one  exception,  updating
       dates:

       hg graft -D "2085::2093 and not 2091"

     o continue a graft after resolving conflicts:

       hg graft -c

     o show the source of a grafted changeset:

       hg log --debug -r .

     Returns 0 on successful completion.

     Options:

     -r, --rev
          revisions to graft

     -c, --continue
          resume interrupted graft

     -e, --edit
          invoke editor on commit messages

     --log
          append graft info to log message

     -D, --currentdate
          record the current date as commit date

     -U, --currentuser
          record the current user as committer

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

     -t, --tool
          specify merge tool

     -n, --dry-run
          do not perform actions, just print output

  grep
     hg grep [OPTION]... PATTERN [FILE]...



SunOS 5.11                Last change:                         24






Mercurial Manual                                            HG(1)



     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.

     Returns 0 if a match is found, 1 otherwise.

     Options:

     -0, --print0
          end fields with NUL

     --all
          print all revisions that match

     -a, --text
          treat all files as text

     -f, --follow
          follow changeset history, or file history across copies
          and renames

     -i, --ignore-case
          ignore case when matching

     -l, --files-with-matches
          print only filenames and revisions that match

     -n, --line-number
          print matching line numbers

     -r, --rev
          only search files changed within revision range

     -u, --user
          list the author (long with -v)

     -d, --date
          list the date (short with -q)

     -I, --include
          include names matching the given patterns

     -X, --exclude



SunOS 5.11                Last change:                         25






Mercurial Manual                                            HG(1)



          exclude names matching the given patterns

  heads
     hg heads [-ct] [-r STARTREV] [REV]...

     With no arguments, show all open branch heads in the reposi-
     tory.  Branch heads are changesets that have no  descendants
     on  the  same  branch.  They are where development generally
     takes place and are the usual targets for update  and  merge
     operations.

     If one or more REVs are given, only open branch heads on the
     branches associated with the specified changesets are shown.
     This  means  that you can use hg heads . to see the heads on
     the currently checked-out branch.

     If -c/--closed is specified, also show branch  heads  marked
     closed (see hg commit --close-branch).

     If  STARTREV is specified, only those heads that are descen-
     dants of STARTREV will be displayed.

     If -t/--topo is specified, named branch  mechanics  will  be
     ignored and only topological heads (changesets with no chil-
     dren) will be shown.

     Returns 0 if matching heads are found, 1 if not.

     Options:

     -r, --rev
          show only heads which are descendants of STARTREV

     -t, --topo
          show topological heads only

     -a, --active
          show active branchheads only (DEPRECATED)

     -c, --closed
          show normal and closed branch heads

     --style
          display using template map file

     --template
          display with template

  help
     hg help [-ec] [TOPIC]

     With no arguments, print a list of commands with short  help



SunOS 5.11                Last change:                         26






Mercurial Manual                                            HG(1)



     messages.

     Given  a  topic,  extension, or command name, print help for
     that topic.

     Returns 0 if successful.

     Options:

     -e, --extension
          show only help for extensions

     -c, --command
          show only help for commands

     -k, --keyword
          show topics matching keyword

  identify
     hg identify [-nibtB] [-r REV] [SOURCE]

     Print a summary identifying  the  repository  state  at  REV
     using  one or two parent hash identifiers, followed by a "+"
     if the working directory has uncommitted changes, the branch
     name  (if  not default), a list of tags, and a list of book-
     marks.

     When REV is not given, 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.

     Examples:

     o generate a build identifier for the working directory:

       hg id --id > build-id.dat

     o find the revision corresponding to a tag:

       hg id -n -r 1.3

     o check the most recent revision of a remote repository:

       hg id -r tip http://selenic.com/hg/

     Returns 0 if successful.

     Options:

     -r, --rev



SunOS 5.11                Last change:                         27






Mercurial Manual                                            HG(1)



          identify the specified revision

     -n, --num
          show local revision number

     -i, --id
          show global revision id

     -b, --branch
          show branch

     -t, --tags
          show tags

     -B, --bookmarks
          show bookmarks

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)

          aliases: id

  import
     hg import [OPTION]... PATCH...

     Import  a  list  of  patches  and  commit  them individually
     (unless --no-commit is specified).

     Because import first applies changes to the  working  direc-
     tory, import will abort if there are outstanding changes.

     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 direc-
     tory to the parent of each patch  before  applying  it,  and



SunOS 5.11                Last change:                         28






Mercurial Manual                                            HG(1)



     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.

     Use --bypass to apply and commit  patches  directly  to  the
     repository,  not  touching  the  working  directory. Without
     --exact, patches will be  applied  on  top  of  the  working
     directory parent revision.

     With  -s/--similarity,  hg  will attempt to discover renames
     and copies in the patch in the same way as hg 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.

     Examples:

     o import  a  traditional  patch  from  a  website and detect
       renames:

       hg import -s 80 http://example.com/bugfix.patch

     o import a changeset from an hgweb server:

       hg import http://www.selenic.com/hg/rev/5ca8c111e9aa

     o import all the patches in an Unix-style mbox:

       hg import incoming-patches.mbox

     o attempt to exactly  restore  an  exported  changeset  (not
       always possible):

       hg import --exact proposed-fix.patch

     Returns 0 on success.

     Options:

     -p, --strip
          directory  strip  option  for  patch. This has the same
          meaning as the corresponding patch option (default: 1)

     -b, --base
          base path (DEPRECATED)

     -e, --edit
          invoke editor on commit messages




SunOS 5.11                Last change:                         29






Mercurial Manual                                            HG(1)



     -f, --force
          skip check for outstanding uncommitted changes  (DEPRE-
          CATED)

     --no-commit
          don't commit, just update the working directory

     --bypass
          apply patch without touching the working directory

     --exact
          apply patch to the nodes from which it was generated

     --import-branch
          use   any  branch  information  in  patch  (implied  by
          --exact)

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

     -s, --similarity
          guess renamed files by similarity (0<=s<=100)

          aliases: patch

  incoming
     hg incoming [-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [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  com-
     mand.

     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.

     Returns 0 if there are incoming changes, 1 otherwise.

     Options:

     -f, --force



SunOS 5.11                Last change:                         30






Mercurial Manual                                            HG(1)



          run even if remote repository is unrelated

     -n, --newest-first
          show newest record first

     --bundle
          file to store the bundles into

     -r, --rev
          a remote changeset intended to be added

     -B, --bookmarks
          compare bookmarks

     -b, --branch
          a specific branch you would like to pull

     -p, --patch
          show patch

     -g, --git
          use git extended diff format

     -l, --limit
          limit number of changes displayed

     -M, --no-merges
          do not show merges

     --stat
          output diffstat-style summary of changes

     -G, --graph
          show the revision DAG

     --style
          display using template map file

     --template
          display with template

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)

     -S, --subrepos



SunOS 5.11                Last change:                         31






Mercurial Manual                                            HG(1)



          recurse into subrepositories

          aliases: in

  init
     hg init [-e CMD] [--remotecmd CMD] [DEST]

     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.

     Returns 0 on success.

     Options:

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do  not verify server certificate (ignoring web.cacerts
          config)

  locate
     hg locate [OPTION]... [PATTERN]...

     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  file-
     names.

     Returns 0 if a match is found, 1 otherwise.

     Options:



SunOS 5.11                Last change:                         32






Mercurial Manual                                            HG(1)



     -r, --rev
          search the repository as it is in REV

     -0, --print0
          end filenames with NUL, for use with xargs

     -f, --fullpath
          print complete paths from the filesystem root

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  log
     hg log [OPTION]... [FILE]

     Print  the  revision  history  of the specified files or the
     entire project.

     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.

     File history is shown without following rename or copy  his-
     tory  of  files.  Use  -f/--follow with a filename to follow
     history across renames and copies. --follow without a  file-
     name will only show ancestors or descendants of the starting
     revision.

     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:.

     Note
     for performance reasons, log FILE may omit duplicate changes
     made on branches and will not show  deletions.  To  see  all
     changes   including   duplicates   and  deletions,  use  the
     --removed switch.

     Some examples:

     o changesets with full descriptions and file lists:




SunOS 5.11                Last change:                         33






Mercurial Manual                                            HG(1)



       hg log -v

     o changesets ancestral to the working directory:

       hg log -f

     o last 10 commits on the current branch:

       hg log -l 10 -b .

     o changesets showing all modifications of a file,  including
       removals:

       hg log --removed file.c

     o all changesets that touch a directory, with diffs, exclud-
       ing merges:

       hg log -Mp lib/

     o all revision numbers that match a keyword:

       hg log -k bug --template "{rev}\n"

     o check if  a  given  changeset  is  included  is  a  tagged
       release:

       hg log -r "a21ccf and ancestor(1.9)"

     o find all changesets by some user in a date range:

       hg log -k alice -d "may 2008 to jul 2008"

     o summary of all changesets after the last tag:

       hg log -r "last(tagged())::" --template "{desc|firstline}\n"

     See hg help dates for a list of formats valid for -d/--date.

     See hg help revisions and hg help  revsets  for  more  about
     specifying revisions.

     See hg help templates for more about pre-packaged styles and
     specifying custom templates.

     Returns 0 on success.

     Options:

     -f, --follow
          follow changeset history, or file history across copies
          and renames



SunOS 5.11                Last change:                         34






Mercurial Manual                                            HG(1)



     --follow-first
          only  follow the first parent of merge changesets (DEP-
          RECATED)

     -d, --date
          show revisions matching date spec

     -C, --copies
          show copied files

     -k, --keyword
          do case-insensitive search for a given text

     -r, --rev
          show the specified revision or range

     --removed
          include revisions where files were removed

     -m, --only-merges
          show only merges (DEPRECATED)

     -u, --user
          revisions committed by user

     --only-branch
          show only changesets  within  the  given  named  branch
          (DEPRECATED)

     -b, --branch
          show changesets within the given named branch

     -P, --prune
          do not display revision or any of its ancestors

     -p, --patch
          show patch

     -g, --git
          use git extended diff format

     -l, --limit
          limit number of changes displayed

     -M, --no-merges
          do not show merges

     --stat
          output diffstat-style summary of changes

     -G, --graph
          show the revision DAG



SunOS 5.11                Last change:                         35






Mercurial Manual                                            HG(1)



     --style
          display using template map file

     --template
          display with template

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

          aliases: history

  manifest
     hg manifest [-r REV]

     Print a list of version controlled files for the given revi-
     sion.  If no revision is given,  the  first  parent  of  the
     working  directory is used, or the null revision if no revi-
     sion is checked out.

     With -v, print  file  permissions,  symlink  and  executable
     bits.  With --debug, print file revision hashes.

     If option --all is specified, the list of all files from all
     revisions is printed.  This  includes  deleted  and  renamed
     files.

     Returns 0 on success.

     Options:

     -r, --rev
          revision to display

     --all
          list files from all revisions

  merge
     hg merge [-P] [-f] [[-r] REV]

     The  current  working  directory is updated with all changes
     made in the requested revision since the last common  prede-
     cessor 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.

     --tool can be used to specify the merge tool used  for  file



SunOS 5.11                Last change:                         36






Mercurial Manual                                            HG(1)



     merges.  It  overrides  the HGMERGE environment variable and
     your  configuration  files.  See  hg  help  merge-tools  for
     options.

     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.

     hg resolve must be used to resolve unresolved files.

     To  undo an uncommitted merge, use hg update --clean . which
     will check out a clean copy of the  original  merge  parent,
     losing all changes.

     Returns 0 on success, 1 if there are unresolved files.

     Options:

     -f, --force
          force  a  merge  including  outstanding changes (DEPRE-
          CATED)

     -r, --rev
          revision to merge

     -P, --preview
          review revisions to merge (no merge is performed)

     -t, --tool
          specify merge tool

  outgoing
     hg outgoing [-M] [-p] [-n] [-f] [-r REV]... [DEST]

     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 details of valid destination formats.

     Returns 0 if there are outgoing changes, 1 otherwise.

     Options:

     -f, --force
          run even when the destination is unrelated

     -r, --rev
          a changeset intended to be included in the destination




SunOS 5.11                Last change:                         37






Mercurial Manual                                            HG(1)



     -n, --newest-first
          show newest record first

     -B, --bookmarks
          compare bookmarks

     -b, --branch
          a specific branch you would like to push

     -p, --patch
          show patch

     -g, --git
          use git extended diff format

     -l, --limit
          limit number of changes displayed

     -M, --no-merges
          do not show merges

     --stat
          output diffstat-style summary of changes

     -G, --graph
          show the revision DAG

     --style
          display using template map file

     --template
          display with template

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)

     -S, --subrepos
          recurse into subrepositories

          aliases: out

  parents
     hg parents [-r REV] [FILE]

     Print   the  working  directory's  parent  revisions.  If  a



SunOS 5.11                Last change:                         38






Mercurial Manual                                            HG(1)



     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.

     Returns 0 on success.

     Options:

     -r, --rev
          show parents of the specified revision

     --style
          display using template map file

     --template
          display with template

  paths
     hg paths [NAME]

     Show definition of symbolic path name NAME. If  no  name  is
     given, show definition of all available names.

     Option  -q/--quiet  suppresses all output when searching for
     NAME and shows only the path names when listing all  defini-
     tions.

     Path  names  are defined in the [paths] section of your con-
     figuration file and in /etc/mercurial/hgrc. If run inside  a
     repository, .hg/hgrc is used, too.

     The path names default and default-push have a special mean-
     ing.  When performing a push or  pull  operation,  they  are
     used  as  fallbacks  if no location is specified on the com-
     mand-line.  When default-push is set, it will  be  used  for
     push and default will be used for pull; otherwise default is
     used as the fallback for both.  When cloning  a  repository,
     the  clone  source  is written as default in .hg/hgrc.  Note
     that default and default-push apply to all inbound (e.g.  hg
     incoming)  and  outbound  (e.g. hg outgoing, hg email and hg
     bundle) operations.

     See hg help urls for more information.

     Returns 0 on success.

  phase
     hg phase [-p|-d|-s] [-f] [-r] REV...

     With  no  argument,  show  the  phase  name   of   specified



SunOS 5.11                Last change:                         39






Mercurial Manual                                            HG(1)



     revisions.

     With  one  of -p/--public, -d/--draft or -s/--secret, change
     the phase value of the specified revisions.

     Unless -f/--force is specified, hg phase won't move  change-
     set  from  a  lower  phase  to  an  higher phase. Phases are
     ordered as follows:

     public < draft < secret

     Return 0 on success, 1 if no phases  were  changed  or  some
     could not be changed.

     Options:

     -p, --public
          set changeset phase to public

     -d, --draft
          set changeset phase to draft

     -s, --secret
          set changeset phase to secret

     -f, --force
          allow to move boundary backward

     -r, --rev
          target revision

  pull
     hg pull [-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]

     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 add those  changes  to  the  repository,  you
     should use hg 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.

     Returns 0 on success, 1 if an update had unresolved files.




SunOS 5.11                Last change:                         40






Mercurial Manual                                            HG(1)



     Options:

     -u, --update
          update to new branch head if changesets were pulled

     -f, --force
          run even when remote repository is unrelated

     -r, --rev
          a remote changeset intended to be added

     -B, --bookmark
          bookmark to pull

     -b, --branch
          a specific branch you would like to pull

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do  not verify server certificate (ignoring web.cacerts
          config)

  push
     hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]

     Push changesets from the local repository to  the  specified
     destination.

     This  operation is symmetrical to pull: it is identical to a
     pull in the destination repository from the current one.

     By default, push will not allow creation of new heads at the
     destination,  since  multiple  heads  would  make it unclear
     which head to use. In this situation, it is  recommended  to
     pull and merge before pushing.

     Use  --new-branch  if you want to allow push to create a new
     named branch that is not present at  the  destination.  This
     allows you to only create a new branch without forcing other
     changes.

     Note Extra care should be taken with the -f/--force  option,
          which  will  push  all  new  heads  on all branches, an
          action which will almost  always  cause  confusion  for
          collaborators.

     If  -r/--rev  is  used,  the  specified revision and all its



SunOS 5.11                Last change:                         41






Mercurial Manual                                            HG(1)



     ancestors will be pushed to the remote repository.

     If -B/--bookmark is used, the specified bookmarked revision,
     its ancestors, and the bookmark 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.

     Returns 0 if push was successful, 1 if nothing to push.

     Options:

     -f, --force
          force push

     -r, --rev
          a changeset intended to be included in the destination

     -B, --bookmark
          bookmark to push

     -b, --branch
          a specific branch you would like to push

     --new-branch
          allow pushing a new branch

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)

  recover
     hg recover

     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 Mer-
     curial suggests it.

     Returns  0  if successful, 1 if nothing to recover or verify
     fails.





SunOS 5.11                Last change:                         42






Mercurial Manual                                            HG(1)



  remove
     hg remove [OPTION]... FILE...

     Schedule the indicated files for removal  from  the  current
     branch.

     This  command  schedules the files to be removed at the next
     commit.  To undo a remove before that,  see  hg  revert.  To
     undo added files, see hg forget.

     -A/--after  can  be  used  to  remove  only  files that have
     already been deleted, -f/--force can be used to force  dele-
     tion,  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  dif-
     ferent 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):
                    +----------+---+----+----+---+
                    |opt/state | A | C  | M  | ! |
                    +----------+---+----+----+---+
                    |none      | W | RD | W  | R |
                    +----------+---+----+----+---+
                    |-f        | R | RD | RD | R |
                    +----------+---+----+----+---+
                    |-A        | W | W  | W  | R |
                    +----------+---+----+----+---+
                    |-Af       | R | R  | R  | R |
                    +----------+---+----+----+---+

     Note that remove never deletes files in Added [A] state from
     the  working directory, not even if option --force is speci-
     fied.

     Returns 0 on success, 1 if any warnings encountered.

     Options:

     -A, --after
          record delete for missing files

     -f, --force
          remove (and delete) file even if added or modified

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns




SunOS 5.11                Last change:                         43






Mercurial Manual                                            HG(1)



          aliases: rm

  rename
     hg rename [OPTION]... SOURCE... DEST

     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.

     Returns 0 on success, 1 if errors are encountered.

     Options:

     -A, --after
          record a rename that has already occurred

     -f, --force
          forcibly copy over an existing managed file

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -n, --dry-run
          do not perform actions, just print output

          aliases: move mv

  resolve
     hg resolve [OPTION]... [FILE]...

     Merges with unresolved conflicts are  often  the  result  of
     non-interactive  merging using the internal:merge configura-
     tion setting, or a command-line merge tool like  diff3.  The
     resolve  command  is  used to manage the files involved in a
     merge, after hg merge has been run, and before hg commit  is
     run  (i.e. the working directory must have two parents). See
     hg help merge-tools for  information  on  configuring  merge
     tools.

     The resolve command can be used in the following ways:




SunOS 5.11                Last change:                         44






Mercurial Manual                                            HG(1)



     o hg  resolve [--tool TOOL] FILE...: attempt to re-merge the
       specified files, discarding any previous  merge  attempts.
       Re-merging  is  not  performed for files already marked as
       resolved. Use --all/-a to  select  all  unresolved  files.
       --tool  can be used to specify the merge tool used for the
       given files. It overrides the HGMERGE environment variable
       and  your configuration files.  Previous file contents are
       saved with a .orig suffix.

     o hg resolve -m [FILE]: mark a file as having been  resolved
       (e.g.  after  having  manually  fixed-up  the  files). The
       default is to mark all unresolved files.

     o hg resolve -u [FILE]...: mark a file  as  unresolved.  The
       default is to mark all resolved files.

     o hg  resolve  -l:  list  files which had or still have con-
       flicts.  In the printed list,  U  =  unresolved  and  R  =
       resolved.

     Note that Mercurial will not let you commit files with unre-
     solved merge conflicts. You  must  use  hg  resolve  -m  ...
     before you can commit after a conflicting merge.

     Returns 0 on success, 1 if any files fail a resolve attempt.

     Options:

     -a, --all
          select all unresolved files

     -l, --list
          list state of files needing merge

     -m, --mark
          mark files as resolved

     -u, --unmark
          mark files as unresolved

     -n, --no-status
          hide status prefix

     -t, --tool
          specify merge tool

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns




SunOS 5.11                Last change:                         45






Mercurial Manual                                            HG(1)



  revert
     hg revert [OPTION]... [-r REV] [NAME]...

     Note To check out  earlier  revisions,  you  should  use  hg
          update  REV.   To cancel an uncommitted merge (and lose
          your changes), use hg update --clean ..

     With no revision specified, revert the  specified  files  or
     directories  to  the  contents they had in the parent of the
     working directory.  This restores the contents of  files  to
     an  unmodified  state and unschedules adds, removes, copies,
     and renames. If the working directory has two  parents,  you
     must explicitly specify a revision.

     Using  the  -r/--rev  or -d/--date options, revert the given
     files or directories to their states as of a specific  revi-
     sion.  Because  revert does not change the working directory
     parents, this will cause these  files  to  appear  modified.
     This  can be helpful to "back out" some or all of an earlier
     change. See hg backout for a related method.

     Modified files are saved with a .orig suffix before  revert-
     ing.  To disable these backups, use --no-backup.

     See hg help dates for a list of formats valid for -d/--date.

     Returns 0 on success.

     Options:

     -a, --all
          revert all changes when no arguments given

     -d, --date
          tipmost revision matching date

     -r, --rev
          revert to the specified revision

     -C, --no-backup
          do not save backup copies of files

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -n, --dry-run
          do not perform actions, just print output





SunOS 5.11                Last change:                         46






Mercurial Manual                                            HG(1)



  rollback
     hg rollback

     Please use hg commit --amend instead of rollback to  correct
     mistakes in the last commit.

     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 com-
     mands 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:

     o commit

     o import

     o pull

     o push (with this repository as the destination)

     o unbundle

     To avoid permanent data loss, rollback will refuse to  roll-
     back  a  commit  transaction  if  it  isn't checked out. Use
     --force to override this protection.

     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.

     Returns 0 on success, 1 if no rollback data is available.

     Options:

     -n, --dry-run
          do not perform actions, just print output

     -f, --force
          ignore safety measures





SunOS 5.11                Last change:                         47






Mercurial Manual                                            HG(1)



  root
     hg root

     Print the root directory of the current repository.

     Returns 0 on success.

  serve
     hg serve [OPTION]...

     Start a local HTTP repository browser and pull  server.  You
     can  use  this  for ad-hoc sharing and browsing of reposito-
     ries. It is recommended to use a real web server to serve  a
     repository for longer periods of time.

     Please  note  that the server does not implement access con-
     trol.  This means that, by default, anybody  can  read  from
     the  server  and  nobody can write to it by default. Set the
     web.allow_push option to * to allow everybody to push to the
     server.  You  should  use  a  real web server if you need to
     authenticate users.

     By default, the server logs accesses to stdout and errors to
     stderr.  Use the -A/--accesslog and -E/--errorlog options to
     log to files.

     To have the server choose a free port number to  listen  on,
     specify  a  port  number of 0; in this case, the server will
     print the port number it uses.

     Returns 0 on success.

     Options:

     -A, --accesslog
          name of access log file to write to

     -d, --daemon
          run server in background

     --daemon-pipefds
          used internally by daemon mode

     -E, --errorlog
          name of error log file to write to

     -p, --port
          port to listen on (default: 8000)

     -a, --address
          address to listen on (default: all interfaces)




SunOS 5.11                Last change:                         48






Mercurial Manual                                            HG(1)



     --prefix
          prefix path to serve from (default: server root)

     -n, --name
          name to show in web pages (default: working directory)

     --web-conf
          name of the hgweb config file (see "hg help hgweb")

     --webdir-conf
          name of the hgweb config file (DEPRECATED)

     --pid-file
          name of file to write process ID to

     --stdio
          for remote clients

     --cmdserver
          for remote clients

     -t, --templates
          web templates to use

     --style
          template style to use

     -6, --ipv6
          use IPv6 in addition to IPv4

     --certificate
          SSL certificate file

  showconfig
     hg showconfig [-u] [NAME]...

     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  con-
     fig items with matching section names.

     With  --debug,  the  source  (filename  and  line number) is
     printed for each config item.

     Returns 0 on success.

     Options:




SunOS 5.11                Last change:                         49






Mercurial Manual                                            HG(1)



     -u, --untrusted
          show untrusted configuration options

          aliases: debugconfig

  status
     hg status [OPTION]... [FILE]...

     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 --change option can also be used as a shortcut to
     list  the changed files of a revision from its first parent.

     The codes used to show the status of files are:

     M = modified
     A = added
     R = removed
     C = clean
     ! = missing (deleted by non-hg command, but still tracked)
     ? = not tracked
     I = ignored
       = origin of the previous file listed as A (added)

     Examples:

     o show changes  in  the  working  directory  relative  to  a
       changeset:

       hg status --rev 9353

     o show  all  changes including copies in an existing change-
       set:

       hg status --copies --change 9353




SunOS 5.11                Last change:                         50






Mercurial Manual                                            HG(1)



     o get a NUL separated list  of  added  files,  suitable  for
       xargs:

       hg status -an0

     Returns 0 on success.

     Options:

     -A, --all
          show status of all files

     -m, --modified
          show only modified files

     -a, --added
          show only added files

     -r, --removed
          show only removed files

     -d, --deleted
          show only deleted (but tracked) files

     -c, --clean
          show only files without changes

     -u, --unknown
          show only unknown (not tracked) files

     -i, --ignored
          show only ignored files

     -n, --no-status
          hide status prefix

     -C, --copies
          show source of copied files

     -0, --print0
          end filenames with NUL, for use with xargs

     --rev
          show difference from revision

     --change
          list the changed files of a revision

     -I, --include
          include names matching the given patterns

     -X, --exclude



SunOS 5.11                Last change:                         51






Mercurial Manual                                            HG(1)



          exclude names matching the given patterns

     -S, --subrepos
          recurse into subrepositories

          aliases: st

  summary
     hg summary [--remote]

     This  generates  a  brief  summary  of the working directory
     state, including parents, branch, commit status, and  avail-
     able updates.

     With  the --remote option, this will check the default paths
     for incoming and outgoing changes. This can be  time-consum-
     ing.

     Returns 0 on success.

     Options:

     --remote
          check for push and pull

          aliases: sum

  tag
     hg tag [-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...

     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. Changing an existing  tag  is  nor-
     mally disallowed; use -f/--force to override.

     If no revision is given, the parent of the working directory
     is used.

     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. This also means that tagging cre-
     ates a new commit. The  file  ".hg/localtags"  is  used  for
     local tags (not shared among repositories).

     Tag commits are usually made at the head of a branch. If the
     parent of the working directory is not a branch head, hg tag
     aborts;  use  -f/--force to force the tag commit to be based
     on a non-head changeset.



SunOS 5.11                Last change:                         52






Mercurial Manual                                            HG(1)



     See hg help dates for a list of formats valid for -d/--date.

     Since tag names have priority over branch names during revi-
     sion lookup, using an existing branch name as a tag name  is
     discouraged.

     Returns 0 on success.

     Options:

     -f, --force
          force tag

     -l, --local
          make the tag local

     -r, --rev
          revision to tag

     --remove
          remove a tag

     -e, --edit
          edit commit message

     -m, --message
          use <text> as commit message

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

  tags
     hg tags

     This  lists  both regular and local tags. When the -v/--ver-
     bose switch is used, a third column "local" is  printed  for
     local tags.

     Returns 0 on success.

  tip
     hg tip [-p] [-g]

     The  tip  revision  (usually  just  called  the  tip) is the
     changeset most recently added to the repository (and  there-
     fore 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



SunOS 5.11                Last change:                         53






Mercurial Manual                                            HG(1)



     tip  of  that  repository becomes the current tip. The "tip"
     tag is special and cannot be renamed or assigned to  a  dif-
     ferent changeset.

     This command is deprecated, please use hg heads instead.

     Returns 0 on success.

     Options:

     -p, --patch
          show patch

     -g, --git
          use git extended diff format

     --style
          display using template map file

     --template
          display with template

  unbundle
     hg unbundle [-u] FILE...

     Apply  one or more compressed changegroup files generated by
     the bundle command.

     Returns 0 on success, 1 if an update has unresolved files.

     Options:

     -u, --update
          update to new branch head if changesets were unbundled

  update
     hg update [-c] [-C] [-d DATE] [[-r] REV]

     Update the repository's working directory to  the  specified
     changeset.  If  no changeset is specified, update to the tip
     of the current named branch and move  the  current  bookmark
     (see hg help bookmarks).

     Update  sets  the working directory's parent revision to the
     specified changeset (see hg help parents).

     If the changeset is not a  descendant  or  ancestor  of  the
     working  directory's parent, the update is aborted. With the
     -c/--check option, the  working  directory  is  checked  for
     uncommitted  changes;  if none are found, the working direc-
     tory is updated to the specified changeset.




SunOS 5.11                Last change:                         54






Mercurial Manual                                            HG(1)



     The following rules apply when the  working  directory  con-
     tains uncommitted changes:

     1. If neither -c/--check nor -C/--clean is specified, and if
        the requested changeset is an ancestor or  descendant  of
        the  working  directory's parent, the uncommitted changes
        are merged into the requested changeset  and  the  merged
        result is left uncommitted. If the requested changeset is
        not an ancestor or descendant (that is, it is on  another
        branch),  the  update  is  aborted  and  the  uncommitted
        changes are preserved.

     2. With the -c/--check option, the update is aborted and the
        uncommitted changes are preserved.

     3. With  the -C/--clean option, uncommitted changes are dis-
        carded and  the  working  directory  is  updated  to  the
        requested changeset.

     To  cancel an uncommitted merge (and lose your changes), use
     hg update --clean ..

     Use null as the changeset to remove  the  working  directory
     (like hg clone -U).

     If  you  want  to revert just one file to an older revision,
     use hg revert [-r REV] NAME.

     See hg help dates for a list of formats valid for -d/--date.

     Returns 0 on success, 1 if there are unresolved files.

     Options:

     -C, --clean
          discard uncommitted changes (no backup)

     -c, --check
          update across branches if no uncommitted changes

     -d, --date
          tipmost revision matching date

     -r, --rev
          revision

          aliases: up checkout co

  verify
     hg verify

     Verify the integrity of the current repository.



SunOS 5.11                Last change:                         55






Mercurial Manual                                            HG(1)



     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.

     Please see  http://mercurial.selenic.com/wiki/RepositoryCor-
     ruption  for more information about recovery from corruption
     of the repository.

     Returns 0 on success, 1 if errors are encountered.

  version
     hg version

     output version and copyright information

DATE FORMATS
     Some commands allow the user to specify a date, e.g.:

     o backout, commit, import, tag: Specify the commit date.

     o log, revert, update: Select revision(s) by date.

     Many date formats are valid. Here are some examples:

     o Wed Dec 6 13:18:29 2006 (local timezone assumed)

     o Dec 6 13:18 -0600 (year assumed, time offset provided)

     o Dec 6 13:18 UTC (UTC and GMT are aliases for +0000)

     o Dec 6 (midnight)

     o 13:18 (today assumed)

     o 3:39 (3:39AM assumed)

     o 3:39pm (15:39)

     o 2006-12-06 13:18:29 (ISO 8601 format)

     o 2006-12-6 13:18

     o 2006-12-6

     o 12-6

     o 12/6

     o 12/6/6 (Dec 6 2006)

     o today (midnight)



SunOS 5.11                Last change:                         56






Mercurial Manual                                            HG(1)



     o yesterday (midnight)

     o now - right now

     Lastly, there is Mercurial's internal format:

     o 1165411109 0 (Wed Dec 6 13:18:29 2006 UTC)

     This is the internal representation format  for  dates.  The
     first  number  is  the  number  of  seconds  since the epoch
     (1970-01-01 00:00 UTC). The second  is  the  offset  of  the
     local  timezone,  in  seconds  west  of UTC (negative if the
     timezone is east of UTC).

     The log command also accepts date ranges:

     o <DATE - at or before a given date/time

     o >DATE - on or after a given date/time

     o DATE to DATE - a date range, inclusive

     o -DAYS - within a given number of days of today

DIFF FORMATS
     Mercurial's default format for showing changes  between  two
     versions  of a file is compatible with the unified format of
     GNU diff, which can be used by  GNU  patch  and  many  other
     standard tools.

     While  this  standard  format  is  often enough, it does not
     encode the following information:

     o executable status and other permission bits

     o copy or rename information

     o changes in binary files

     o creation or deletion of empty files

     Mercurial also supports the extended diff  format  from  the
     git VCS which addresses these limitations. The git diff for-
     mat is not produced by  default  because  a  few  widespread
     tools still do not understand this format.

     This  means  that  when  generating  diffs  from a Mercurial
     repository (e.g. with hg  export),  you  should  be  careful
     about  things  like  file copies and renames or other things
     mentioned above, because when applying a standard diff to  a
     different repository, this extra information is lost. Mercu-
     rial's internal operations (like  push  and  pull)  are  not



SunOS 5.11                Last change:                         57






Mercurial Manual                                            HG(1)



     affected by this, because they use an internal binary format
     for communicating changes.

     To make Mercurial produce the git extended diff format,  use
     the  --git option available for many commands, or set 'git =
     True' in the [diff] section of your configuration file.  You
     do  not need to set this option when importing diffs in this
     format or using them in the mq extension.

ENVIRONMENT VARIABLES
     HG   Path to the 'hg' executable, automatically passed  when
          running  hooks,  extensions or external tools. If unset
          or empty, this is the  hg  executable's  name  if  it's
          frozen,  or  an  executable  named 'hg' (with %PATHEXT%
          [defaulting to COM/EXE/BAT/CMD] extensions on  Windows)
          is searched.

     HGEDITOR
          This  is the name of the editor to run when committing.
          See EDITOR.

          (deprecated, use configuration file)

     HGENCODING
          This overrides the default locale setting  detected  by
          Mercurial.   This  setting  is  used  to  convert  data
          including usernames, changeset descriptions, tag names,
          and  branches.  This setting can be overridden with the
          --encoding command-line option.

     HGENCODINGMODE
          This sets Mercurial's  behavior  for  handling  unknown
          characters while transcoding user input. The default is
          "strict", which causes Mercurial to abort if  it  can't
          map  a  character.  Other  settings  include "replace",
          which replaces unknown characters, and "ignore",  which
          drops  them.  This  setting  can be overridden with the
          --encodingmode command-line option.

     HGENCODINGAMBIGUOUS
          This sets Mercurial's behavior for handling  characters
          with  "ambiguous" widths like accented Latin characters
          with East Asian fonts. By  default,  Mercurial  assumes
          ambiguous  characters  are narrow, set this variable to
          "wide" if such characters cause formatting problems.

     HGMERGE
          An executable to use for resolving merge conflicts. The
          program  will  be  executed with three arguments: local
          file, remote file, ancestor file.

          (deprecated, use configuration file)



SunOS 5.11                Last change:                         58






Mercurial Manual                                            HG(1)



     HGRCPATH
          A list of files or directories to search for configura-
          tion  files. Item separator is ":" on Unix, ";" on Win-
          dows. If HGRCPATH is not set, platform  default  search
          path is used. If empty, only the .hg/hgrc from the cur-
          rent repository is read.

          For each element in HGRCPATH:

            o if it's a directory, all files ending with .rc  are
              added

            o otherwise, the file itself will be added

     HGPLAIN
          When set, this disables any configuration settings that
          might change Mercurial's default output. This  includes
          encoding,  defaults,  verbose  mode,  debug mode, quiet
          mode, tracebacks, and localization. This can be  useful
          when  scripting against Mercurial in the face of exist-
          ing user configuration.

          Equivalent options set via command line flags or  envi-
          ronment variables are not overridden.

     HGPLAINEXCEPT
          This  is a comma-separated list of features to preserve
          when HGPLAIN is enabled. Currently the only value  sup-
          ported  is "i18n", which preserves internationalization
          in plain mode.

          Setting  HGPLAINEXCEPT  to  anything  (even  an   empty
          string) will enable plain mode.

     HGUSER
          This  is  the string used as the author of a commit. If
          not set, available values will be  considered  in  this
          order:

            o HGUSER (deprecated)

            o configuration files from the HGRCPATH

            o EMAIL

            o interactive prompt

            o LOGNAME (with @hostname appended)

     (deprecated, use configuration file)

     EMAIL



SunOS 5.11                Last change:                         59






Mercurial Manual                                            HG(1)



          May be used as the author of a commit; see HGUSER.

     LOGNAME
          May be used as the author of a commit; see HGUSER.

     VISUAL
          This  is the name of the editor to use when committing.
          See EDITOR.

     EDITOR
          Sometimes Mercurial needs to open a  text  file  in  an
          editor  for  a user to modify, for example when writing
          commit messages. The editor it uses  is  determined  by
          looking  at  the environment variables HGEDITOR, VISUAL
          and EDITOR, in that order. The first non-empty  one  is
          chosen.  If  all of them are empty, the editor defaults
          to 'vi'.

     PYTHONPATH
          This is used by Python to find imported modules and may
          need  to  be set appropriately if this Mercurial is not
          installed system-wide.

USING ADDITIONAL FEATURES
     Mercurial has the ability to add new  features  through  the
     use  of  extensions.  Extensions  may  add new commands, add
     options to existing commands, change the default behavior of
     commands, or implement hooks.

     To enable the "foo" extension, either shipped with Mercurial
     or in the Python search path, create an entry for it in your
     configuration file, like this:

     [extensions]
     foo =

     You may also specify the full path to an extension:

     [extensions]
     myfeature = ~/.hgext/myfeature.py

     See  hg  help  config  for more information on configuration
     files.

     Extensions are not loaded by default for a variety  of  rea-
     sons:  they can increase startup overhead; they may be meant
     for advanced usage only; they may provide  potentially  dan-
     gerous abilities (such as letting you destroy or modify his-
     tory); they might not be ready for prime time; or  they  may
     alter some usual behaviors of stock Mercurial. It is thus up
     to the user to activate extensions as needed.




SunOS 5.11                Last change:                         60






Mercurial Manual                                            HG(1)



     To explicitly disable an extension enabled in  a  configura-
     tion file of broader scope, prepend its path with !:

     [extensions]
     # disabling extension bar residing in /path/to/extension/bar.py
     bar = !/path/to/extension/bar.py
     # ditto, but no path was supplied for extension baz
     baz = !

     disabled extensions:

        acl  hooks for controlling repository access

        blackbox
             log repository events to a blackbox for debugging

        bugzilla
             hooks for integrating with the Bugzilla bug tracker

        children
             command to display child changesets (DEPRECATED)

        churn
             command  to display statistics about repository his-
             tory

        color
             colorize output from some commands

        convert
             import revisions from foreign VCS repositories  into
             Mercurial

        eol  automatically manage newlines in repository files

        extdiff
             command  to allow external programs to compare revi-
             sions

        factotum
             http authentication with factotum

        fetch
             pull, update and merge in one command (DEPRECATED)

        gpg  commands to sign and verify changesets

        graphlog
             command to view revision graphs from a shell

        hgcia
             hooks for integrating with the  CIA.vc  notification



SunOS 5.11                Last change:                         61






Mercurial Manual                                            HG(1)



             service

        hgk  browse the repository in a graphical way

        highlight
             syntax highlighting for hgweb (requires Pygments)

        histedit
             interactive history editing

        inotify
             accelerate  status report using Linux's inotify ser-
             vice

        interhg
             expand expressions into changelog and summaries

        keyword
             expand keywords in tracked files

        largefiles
             track large binary files

        mq   manage a stack of patches

        notify
             hooks for sending email push notifications

        pager
             browse command output with an external pager

        patchbomb
             command to send changesets as (a  series  of)  patch
             emails

        progress
             show progress bars for some actions

        purge
             command  to  delete untracked files from the working
             directory

        rebase
             command to move sets of  revisions  to  a  different
             ancestor

        record
             commands  to  interactively  select changes for com-
             mit/qrefresh

        relink
             recreates hardlinks between repository clones



SunOS 5.11                Last change:                         62






Mercurial Manual                                            HG(1)



        schemes
             extend schemes with shortcuts to repository swarms

        share
             share  a  common  history  between  several  working
             directories

        shelve
             save and restore changes to the working directory

        strip
             strip changesets and their descendents from history

        transplant
             command to transplant changesets from another branch

        win32mbcs
             allow the use of MBCS paths with problematic  encod-
             ings

        win32text
             perform automatic newline conversion

        zeroconf
             discover  and  advertise  repositories  on the local
             network

SPECIFYING FILE SETS
     Mercurial supports a functional language for selecting a set
     of files.

     Like  other file patterns, this pattern type is indicated by
     a prefix, 'set:'. The language supports a number  of  predi-
     cates  which  are joined by infix operators. Parenthesis can
     be used for grouping.

     Identifiers such as filenames or  patterns  must  be  quoted
     with single or double quotes if they contain characters out-
     side of [.*{}[]?/\_a-zA-Z0-9\x80-\xff] or if they match  one
     of the predefined predicates. This generally applies to file
     patterns other than globs and arguments for predicates.

     Special characters can be  used  in  quoted  identifiers  by
     escaping them, e.g., \n is interpreted as a newline. To pre-
     vent them from being interpreted, strings  can  be  prefixed
     with r, e.g. r'...'.

     There is a single prefix operator:

     not x

          Files not in x. Short form is ! x.



SunOS 5.11                Last change:                         63






Mercurial Manual                                            HG(1)



     These are the supported infix operators:

     x and y

          The intersection of files in x and y. Short form is x &
          y.

     x or y

          The union of files in x and y. There are  two  alterna-
          tive short forms: x | y and x + y.

     x - y

          Files in x but not in y.

     The following predicates are supported:

     added()

          File that is added according to status.

     binary()

          File that appears to be binary (contains NUL bytes).

     clean()

          File that is clean according to status.

     copied()

          File that is recorded as being copied.

     deleted()

          File that is deleted according to status.

     encoding(name)

          File can be successfully decoded with the given charac-
          ter encoding. May not be  useful  for  encodings  other
          than ASCII and UTF-8.

     eol(style)

          File  contains  newlines of the given style (dos, unix,
          mac). Binary files are excluded, files with mixed  line
          endings match multiple styles.

     exec()




SunOS 5.11                Last change:                         64






Mercurial Manual                                            HG(1)



          File that is marked as executable.

     grep(regex)

          File contains the given regular expression.

     hgignore()

          File that matches the active .hgignore pattern.

     ignored()

          File  that  is ignored according to status. These files
          will only be considered if this predicate is used.

     modified()

          File that is modified according to status.

     removed()

          File that is removed according to status.

     resolved()

          File that is marked resolved according to  the  resolve
          state.

     size(expression)

          File size matches the given expression. Examples:

            o 1k (files from 1024 to 2047 bytes)

            o < 20k (files less than 20480 bytes)

            o >= .5MB (files at least 524288 bytes)

            o 4k - 1MB (files from 4096 bytes to 1048576 bytes)

     subrepo([pattern])

          Subrepositories whose paths match the given pattern.

     symlink()

          File that is marked as a symlink.

     unknown()

          File  that  is unknown according to status. These files
          will only be considered if this predicate is used.



SunOS 5.11                Last change:                         65






Mercurial Manual                                            HG(1)



     unresolved()

          File that is marked unresolved according to the resolve
          state.

     Some sample queries:

     o Show status of files that appear to be binary in the work-
       ing directory:

       hg status -A "set:binary()"

     o Forget  files  that  are  in  .hgignore  but  are  already
       tracked:

       hg forget "set:hgignore() and not ignored()"

     o Find text files that contain a string:

       hg locate "set:grep(magic) and not binary()"

     o Find C files in a non-standard encoding:

       hg locate "set:**.c and not encoding('UTF-8')"

     o Revert copies of large binary files:

       hg revert "set:copied() and binary() and size('>1M')"

     o Remove  files  listed in foo.lst that contain the letter a
       or b:

       hg remove "set: 'listfile:foo.lst' and (**a* or **b*)"

     See also hg help patterns.

GLOSSARY
     Ancestor
          Any changeset that can be reached by an unbroken  chain
          of  parent changesets from a given changeset. More pre-
          cisely, the ancestors of a changeset can be defined  by
          two properties: a parent of a changeset is an ancestor,
          and a parent of an ancestor is an ancestor.  See  also:
          'Descendant'.

     Bookmark
          Bookmarks  are  pointers  to  certain commits that move
          when committing. They are similar to tags in that it is
          possible to use bookmark names in all places where Mer-
          curial expects a changeset ID, e.g.,  with  hg  update.
          Unlike  tags, bookmarks move along when you make a com-
          mit.



SunOS 5.11                Last change:                         66






Mercurial Manual                                            HG(1)



          Bookmarks can be renamed, copied and deleted. Bookmarks
          are  local, unless they are explicitly pushed or pulled
          between repositories.  Pushing  and  pulling  bookmarks
          allow  you to collaborate with others on a branch with-
          out creating a named branch.

     Branch
          (Noun) A child changeset that has been created  from  a
          parent that is not a head. These are known as topologi-
          cal branches, see 'Branch, topological'. If a topologi-
          cal  branch  is  named, it becomes a named branch. If a
          topological branch is not named, it becomes  an  anony-
          mous  branch.  See  'Branch,  anonymous'  and  'Branch,
          named'.

          Branches may be created when changes are pulled from or
          pushed  to  a remote repository, since new heads may be
          created by these operations. Note that the term  branch
          can  also  be used informally to describe a development
          process in which certain development is  done  indepen-
          dently  of  other  development.  This is sometimes done
          explicitly with a named branch, but it can also be done
          locally,   using  bookmarks  or  clones  and  anonymous
          branches.

          Example: "The experimental branch".

          (Verb) The action of creating a child  changeset  which
          results in its parent having more than one child.

          Example: "I'm going to branch at X".

     Branch, anonymous
          Every time a new child changeset is created from a par-
          ent that is not a head and the name of  the  branch  is
          not changed, a new anonymous branch is created.

     Branch, closed
          A named branch whose branch heads have all been closed.

     Branch, default
          The branch assigned to a changeset  when  no  name  has
          previously been assigned.

     Branch head
          See 'Head, branch'.

     Branch, inactive
          If  a named branch has no topological heads, it is con-
          sidered to be inactive. As an example, a feature branch
          becomes  inactive  when  it  is merged into the default
          branch. The hg branches command shows inactive branches



SunOS 5.11                Last change:                         67






Mercurial Manual                                            HG(1)



          by  default, though they can be hidden with hg branches
          --active.

          NOTE: this concept is  deprecated  because  it  is  too
          implicit.   Branches  should  now  be explicitly closed
          using hg commit --close-branch when they are no  longer
          needed.

     Branch, named
          A  collection  of changesets which have the same branch
          name. By default, children of a changeset  in  a  named
          branch  belong to the same named branch. A child can be
          explicitly assigned to a different branch. See hg  help
          branch,  hg  help branches and hg commit --close-branch
          for more information on managing branches.

          Named branches can be thought of as a  kind  of  names-
          pace,  dividing  the collection of changesets that com-
          prise the repository into a collection of disjoint sub-
          sets.  A  named branch is not necessarily a topological
          branch. If a new named branch is created from the  head
          of  another named branch, or the default branch, but no
          further changesets are added to that  previous  branch,
          then  that  previous  branch  will  be a branch in name
          only.

     Branch tip
          See 'Tip, branch'.

     Branch, topological
          Every time a new child changeset is created from a par-
          ent  that  is  not  a head, a new topological branch is
          created. If a topological branch is named, it becomes a
          named  branch. If a topological branch is not named, it
          becomes an anonymous branch of  the  current,  possibly
          default, branch.

     Changelog
          A  record  of the changesets in the order in which they
          were added to the  repository.  This  includes  details
          such as changeset id, author, commit message, date, and
          list of changed files.

     Changeset
          A snapshot of the  state  of  the  repository  used  to
          record a change.

     Changeset, child
          The  converse  of parent changeset: if P is a parent of
          C, then C is a child of P. There is  no  limit  to  the
          number of children that a changeset may have.




SunOS 5.11                Last change:                         68






Mercurial Manual                                            HG(1)



     Changeset id
          A  SHA-1  hash that uniquely identifies a changeset. It
          may be represented as either a  "long"  40  hexadecimal
          digit string, or a "short" 12 hexadecimal digit string.

     Changeset, merge
          A changeset with two parents. This occurs when a  merge
          is committed.

     Changeset, parent
          A  revision  upon  which  a  child  changeset is based.
          Specifically, a parent changeset of a changeset C is  a
          changeset whose node immediately precedes C in the DAG.
          Changesets have at most two parents.

     Checkout
          (Noun) The working directory being updated  to  a  spe-
          cific  revision.  This  use  should probably be avoided
          where possible, as changeset is much  more  appropriate
          than checkout in this context.

          Example: "I'm using checkout X."

          (Verb)  Updating  the  working  directory to a specific
          changeset. See hg help update.

          Example: "I'm going to check out changeset X."

     Child changeset
          See 'Changeset, child'.

     Close changeset
          See 'Head, closed branch'

     Closed branch
          See 'Branch, closed'.

     Clone
          (Noun) An entire or partial copy of a  repository.  The
          partial clone must be in the form of a revision and its
          ancestors.

          Example: "Is your clone up to date?".

          (Verb) The process of creating a clone, using hg clone.

          Example: "I'm going to clone the repository".

     Closed branch head
          See 'Head, closed branch'.

     Commit



SunOS 5.11                Last change:                         69






Mercurial Manual                                            HG(1)



          (Noun) A synonym for changeset.

          Example: "Is the bug fixed in your recent commit?"

          (Verb)  The  act  of recording changes to a repository.
          When files are committed in a working directory, Mercu-
          rial  finds the differences between the committed files
          and their parent changeset, creating a new changeset in
          the repository.

          Example: "You should commit those changes now."

     Cset A common abbreviation of the term changeset.

     DAG  The  repository  of changesets of a distributed version
          control system (DVCS) can be described  as  a  directed
          acyclic  graph  (DAG),  consisting  of nodes and edges,
          where nodes correspond to changesets and edges imply  a
          parent  -> child relation. This graph can be visualized
          by graphical tools such as hg log  --graph.  In  Mercu-
          rial,  the  DAG is limited by the requirement for chil-
          dren to have at most two parents.

     Default branch
          See 'Branch, default'.

     Descendant
          Any changeset that can be reached by a chain  of  child
          changesets  from a given changeset. More precisely, the
          descendants of a changeset can be defined by two  prop-
          erties:  the  child of a changeset is a descendant, and
          the child of a descendant is a  descendant.  See  also:
          'Ancestor'.

     Diff (Noun)   The   difference   between  the  contents  and
          attributes of files in two changesets  or  a  changeset
          and  the  current  working directory. The difference is
          usually represented in a standard form called a  "diff"
          or  "patch".  The  "git  diff"  format is used when the
          changes include copies, renames,  or  changes  to  file
          attributes, none of which can be represented/handled by
          classic "diff" and "patch".

          Example: "Did you see my correction in the diff?"

          (Verb) Diffing two changesets is the action of creating
          a diff or patch.

          Example:  "If  you  diff with changeset X, you will see
          what I mean."

     Directory, working



SunOS 5.11                Last change:                         70






Mercurial Manual                                            HG(1)



          The working directory represents the state of the files
          tracked by Mercurial, that will be recorded in the next
          commit. The working directory initially corresponds  to
          the  snapshot  at  an  existing changeset, known as the
          parent of the working directory. See  'Parent,  working
          directory'. The state may be modified by changes to the
          files introduced manually or by a merge. The repository
          metadata exists in the .hg directory inside the working
          directory.

     Draft
          Changesets in the draft phase have not been shared with
          publishing  repositories and may thus be safely changed
          by history-modifying extensions. See hg help phases.

     Graph
          See DAG and hg log --graph.

     Head The term 'head' may be used to refer to both  a  branch
          head  or  a  repository head, depending on the context.
          See 'Head, branch' and 'Head, repository' for  specific
          definitions.

          Heads  are  where development generally takes place and
          are the usual targets for update and merge  operations.

     Head, branch
          A  changeset  with  no  descendants  on  the same named
          branch.

     Head, closed branch
          A changeset that marks a head as no longer interesting.
          The  closed  head  is  no  longer listed by hg heads. A
          branch is considered closed  when  all  its  heads  are
          closed and consequently is not listed by hg branches.

          Closed heads can be re-opened by committing new change-
          set as the child of the changeset that marks a head  as
          closed.

     Head, repository
          A topological head which has not been closed.

     Head, topological
          A changeset with no children in the repository.

     History, immutable
          Once  committed,  changesets cannot be altered.  Exten-
          sions which appear to change  history  actually  create
          new  changesets  that  replace  existing ones, and then
          destroy the old changesets. Doing so in public  reposi-
          tories  can result in old changesets being reintroduced



SunOS 5.11                Last change:                         71






Mercurial Manual                                            HG(1)



          to the repository.

     History, rewriting
          The changesets in a repository are immutable.  However,
          extensions to Mercurial can be used to alter the repos-
          itory, usually in such a way as to  preserve  changeset
          contents.

     Immutable history
          See 'History, immutable'.

     Merge changeset
          See 'Changeset, merge'.

     Manifest
          Each  changeset  has  a  manifest, which is the list of
          files that are tracked by the changeset.

     Merge
          Used to bring together divergent branches of work. When
          you  update  to  a  changeset  and  then  merge another
          changeset, you bring the history of the latter  change-
          set  into  your  working  directory. Once conflicts are
          resolved (and marked), this merge may be committed as a
          merge  changeset, bringing two branches together in the
          DAG.

     Named branch
          See 'Branch, named'.

     Null changeset
          The  empty  changeset.  It  is  the  parent  state   of
          newly-initialized repositories and repositories with no
          checked out revision. It is thus  the  parent  of  root
          changesets  and  the  effective  ancestor  when merging
          unrelated changesets. Can be  specified  by  the  alias
          'null' or by the changeset ID '000000000000'.

     Parent
          See 'Changeset, parent'.

     Parent changeset
          See 'Changeset, parent'.

     Parent, working directory
          The  working  directory parent reflects a virtual revi-
          sion which is  the  child  of  the  changeset  (or  two
          changesets  with an uncommitted merge) shown by hg par-
          ents. This is changed with hg update. Other commands to
          see  the working directory parent are hg summary and hg
          id. Can be specified by the alias ".".




SunOS 5.11                Last change:                         72






Mercurial Manual                                            HG(1)



     Patch
          (Noun) The product of a diff operation.

          Example: "I've sent you my patch."

          (Verb) The process of using a patch file  to  transform
          one changeset into another.

          Example: "You will need to patch that revision."

     Phase
          A  per-changeset  state  tracking how the changeset has
          been or should be shared. See hg help phases.

     Public
          Changesets in the public phase have  been  shared  with
          publishing  repositories  and  are therefore considered
          immutable. See hg help phases.

     Pull An operation in which changesets in a remote repository
          which  are not in the local repository are brought into
          the local repository. Note that this operation  without
          special  arguments only updates the repository, it does
          not update the files in the working directory.  See  hg
          help pull.

     Push An  operation in which changesets in a local repository
          which are not in a remote repository are  sent  to  the
          remote  repository.  Note that this operation only adds
          changesets which have been  committed  locally  to  the
          remote  repository.  Uncommitted  changes are not sent.
          See hg help push.

     Repository
          The metadata describing all recorded states of  a  col-
          lection of files. Each recorded state is represented by
          a changeset. A repository is usually (but  not  always)
          found  in  the .hg subdirectory of a working directory.
          Any recorded state can be  recreated  by  "updating"  a
          working directory to a specific changeset.

     Repository head
          See 'Head, repository'.

     Revision
          A  state  of the repository at some point in time. Ear-
          lier revisions can be updated to by  using  hg  update.
          See also 'Revision number'; See also 'Changeset'.

     Revision number
          This  integer uniquely identifies a changeset in a spe-
          cific repository. It  represents  the  order  in  which



SunOS 5.11                Last change:                         73






Mercurial Manual                                            HG(1)



          changesets  were  added  to a repository, starting with
          revision number 0. Note that the revision number may be
          different  in  each  clone of a repository. To identify
          changesets  uniquely  between  different  clones,   see
          'Changeset id'.

     Revlog
          History  storage  mechanism  used by Mercurial. It is a
          form of delta encoding, with occasional  full  revision
          of  data followed by delta of each successive revision.
          It includes data and an index pointing to the data.

     Rewriting history
          See 'History, rewriting'.

     Root A changeset that has only the  null  changeset  as  its
          parent.  Most  repositories  have  only  a  single root
          changeset.

     Secret
          Changesets in the secret phase may not  be  shared  via
          push, pull, or clone. See hg help phases.

     Tag  An  alternative  name given to a changeset. Tags can be
          used in all places where Mercurial expects a  changeset
          ID,  e.g.,  with  hg  update.  The creation of a tag is
          stored in the history and will  thus  automatically  be
          shared with other using push and pull.

     Tip  The  changeset  with the highest revision number. It is
          the changeset most recently added in a repository.

     Tip, branch
          The head of a given branch with  the  highest  revision
          number.  When a branch name is used as a revision iden-
          tifier, it refers to the branch tip. See also  'Branch,
          head'.  Note  that because revision numbers may be dif-
          ferent in different repository clones, the  branch  tip
          may be different in different cloned repositories.

     Update
          (Noun) Another synonym of changeset.

          Example: "I've pushed an update".

          (Verb)  This  term is usually used to describe updating
          the state of the working directory to that  of  a  spe-
          cific changeset. See hg help update.

          Example: "You should update".

     Working directory



SunOS 5.11                Last change:                         74






Mercurial Manual                                            HG(1)



          See 'Directory, working'.

     Working directory parent
          See 'Parent, working directory'.

SYNTAX FOR MERCURIAL IGNORE FILES
  Synopsis
     The  Mercurial  system  uses  a file called .hgignore in the
     root directory of a repository to control its behavior  when
     it searches for files that it is not currently tracking.

  Description
     The  working  directory of a Mercurial repository will often
     contain files that should not be tracked by Mercurial. These
     include  backup  files created by editors and build products
     created by compilers.  These files can be ignored by listing
     them  in  a .hgignore file in the root of the working direc-
     tory. The .hgignore file must be  created  manually.  It  is
     typically  put  under  version control, so that the settings
     will propagate to other repositories with push and pull.

     An untracked file is ignored if its  path  relative  to  the
     repository  root directory, or any prefix path of that path,
     is matched against any pattern in .hgignore.

     For example, say we  have  an  untracked  file,  file.c,  at
     a/b/file.c  inside  our  repository.  Mercurial  will ignore
     file.c if any pattern in .hgignore matches  a/b/file.c,  a/b
     or a.

     In  addition, a Mercurial configuration file can reference a
     set of per-user or global ignore files. See the ignore  con-
     figuration  key  on  the  [ui] section of hg help config for
     details of how to configure these files.

     To control Mercurial's handling of files  that  it  manages,
     many  commands  support  the  -I and -X options; see hg help
     <command> and hg help patterns for details.

     Files that are already tracked are not  affected  by  .hgig-
     nore,  even if they appear in .hgignore. An untracked file X
     can be explicitly added with hg add X, even if  X  would  be
     excluded by a pattern in .hgignore.

  Syntax
     An  ignore file is a plain text file consisting of a list of
     patterns,  with  one  pattern  per  line.  Empty  lines  are
     skipped.  The # character is treated as a comment character,
     and the \ character is treated as an escape character.

     Mercurial supports several  pattern  syntaxes.  The  default
     syntax used is Python/Perl-style regular expressions.



SunOS 5.11                Last change:                         75






Mercurial Manual                                            HG(1)



     To change the syntax used, use a line of the following form:

     syntax: NAME

     where NAME is one of the following:

     regexp

          Regular expression, Python/Perl syntax.

     glob

          Shell-style glob.

     The chosen syntax stays in effect when parsing all  patterns
     that follow, until another syntax is selected.

     Neither  glob  nor regexp patterns are rooted. A glob-syntax
     pattern of the form *.c will match a file ending  in  .c  in
     any directory, and a regexp pattern of the form \.c$ will do
     the same. To root a regexp pattern, start it with ^.

     Note Patterns specified in other than .hgignore  are  always
          rooted.  Please see hg help patterns for details.

  Example
     Here is an example ignore file.

     # use glob syntax.
     syntax: glob

     *.elc
     *.pyc
     *~

     # switch to regexp syntax.
     syntax: regexp
     ^\.pc/

CONFIGURING HGWEB
     Mercurial's  internal  web server, hgweb, can serve either a
     single repository, or a tree of repositories. In the  second
     case,  repository  paths  and  global options can be defined
     using a dedicated configuration file  common  to  hg  serve,
     hgweb.wsgi, hgweb.cgi and hgweb.fcgi.

     This file uses the same syntax as other Mercurial configura-
     tion files but recognizes only the following sections:

        o web

        o paths



SunOS 5.11                Last change:                         76






Mercurial Manual                                            HG(1)



        o collections

     The web options are thoroughly described in hg help  config.

     The paths section maps URL paths to paths of repositories in
     the  filesystem.  hgweb  will  not  expose  the   filesystem
     directly  - only Mercurial repositories can be published and
     only according to the configuration.

     The left hand side is the path in the URL. Note  that  hgweb
     reserves  subpaths  like  rev  or  file, try using different
     names for nested repositories to avoid confusing effects.

     The right hand side is the path in the  filesystem.  If  the
     specified  path  ends  with  *  or ** the filesystem will be
     searched recursively  for  repositories  below  that  point.
     With  *  it  will not recurse into the repositories it finds
     (except for .hg/patches).   With  **  it  will  also  search
     inside repository working directories and possibly find sub-
     repositories.

     In this example:

     [paths]
     /projects/a = /srv/tmprepos/a
     /projects/b = c:/repos/b
     / = /srv/repos/*
     /user/bob = /home/bob/repos/**

     o The first two entries make two repositories  in  different
       directories  appear  under  the  same directory in the web
       interface

     o The third entry will publish  every  Mercurial  repository
       found   in   /srv/repos/,   for  instance  the  repository
       /srv/repos/quux/ will appear as http://server/quux/

     o The     fourth      entry      will      publish      both
       http://server/user/bob/quux/                           and
       http://server/user/bob/quux/testsubrepo/

     The collections section is deprecated and  has  been  super-
     seded by paths.

MERGE TOOLS
     To merge files Mercurial uses merge tools.

     A  merge tool combines two different versions of a file into
     a merged file. Merge tools are given the two files  and  the
     greatest  common  ancestor of the two file versions, so they
     can determine the changes made on both branches.




SunOS 5.11                Last change:                         77






Mercurial Manual                                            HG(1)



     Merge tools are used both  for  hg  resolve,  hg  merge,  hg
     update, hg backout and in several extensions.

     Usually, the merge tool tries to automatically reconcile the
     files by combining all non-overlapping changes that occurred
     separately  in the two different evolutions of the same ini-
     tial base file. Furthermore, some interactive merge programs
     make  it  easier  to  manually  resolve  conflicting merges,
     either in a graphical way, or  by  inserting  some  conflict
     markers.  Mercurial  does  not include any interactive merge
     programs but relies on external tools for that.

  Available merge tools
     External merge tools and their properties are configured  in
     the  merge-tools  configuration  section - see hgrc(5) - but
     they can often just be named by their executable.

     A merge tool is generally usable if its  executable  can  be
     found on the system and if it can handle the merge. The exe-
     cutable is found if it is an absolute or relative executable
     path  or the name of an application in the executable search
     path. The tool is assumed to be able to handle the merge  if
     it  can  handle symlinks if the file is a symlink, if it can
     handle binary files if the file is binary, and if a  GUI  is
     available if the tool requires a GUI.

     There  are  some internal merge tools which can be used. The
     internal merge tools are:

     internal:dump

          Creates three versions of the files to merge,  contain-
          ing  the contents of local, other and base. These files
          can then be used to perform a merge  manually.  If  the
          file  to  be  merged  is  named a.txt, these files will
          accordingly  be  named  a.txt.local,  a.txt.other   and
          a.txt.base  and  they will be placed in the same direc-
          tory as a.txt.

     internal:fail

          Rather than attempting to merge files that  were  modi-
          fied on both branches, it marks them as unresolved. The
          resolve command must be  used  to  resolve  these  con-
          flicts.

     internal:local

          Uses  the local version of files as the merged version.

     internal:merge




SunOS 5.11                Last change:                         78






Mercurial Manual                                            HG(1)



          Uses the internal non-interactive  simple  merge  algo-
          rithm  for merging files. It will fail if there are any
          conflicts and leave markers  in  the  partially  merged
          file.

     internal:other

          Uses  the other version of files as the merged version.

     internal:prompt

          Asks the user which of the local or the  other  version
          to keep as the merged version.

     Internal tools are always available and do not require a GUI
     but will by default not handle symlinks or binary files.

  Choosing a merge tool
     Mercurial uses these rules when deciding which merge tool to
     use:

     1. If  a  tool  has been specified with the --tool option to
        merge or resolve, it is used.  If it is  the  name  of  a
        tool  in the merge-tools configuration, its configuration
        is used. Otherwise the specified tool must be  executable
        by the shell.

     2. If the HGMERGE environment variable is present, its value
        is used and must be executable by the shell.

     3. If the filename of the file to be merged matches  any  of
        the patterns in the merge-patterns configuration section,
        the first usable merge tool corresponding to  a  matching
        pattern  is  used. Here, binary capabilities of the merge
        tool are not considered.

     4. If ui.merge is set it will be  considered  next.  If  the
        value is not the name of a configured tool, the specified
        value is used and must be executable by the shell. Other-
        wise the named tool is used if it is usable.

     5. If  any usable merge tools are present in the merge-tools
        configuration section, the one with the highest  priority
        is used.

     6. If a program named hgmerge can be found on the system, it
        is used - but it will by default not be used for symlinks
        and binary files.

     7. If  the file to be merged is not binary and is not a sym-
        link, then internal:merge is used.




SunOS 5.11                Last change:                         79






Mercurial Manual                                            HG(1)



     8. The merge of the file fails and must be  resolved  before
        commit.

     Note After  selecting  a  merge  program,  Mercurial will by
          default attempt to merge the files using a simple merge
          algorithm  first. Only if it doesn't succeed because of
          conflicting changes Mercurial will actually execute the
          merge  program.  Whether  to use the simple merge algo-
          rithm first can be controlled by the  premerge  setting
          of  the  merge  tool.  Premerge  is  enabled by default
          unless the file is binary or a symlink.

     See the merge-tools and ui sections of hgrc(5)  for  details
     on the configuration of merge tools.

SPECIFYING MULTIPLE REVISIONS
     When  Mercurial  accepts more than one revision, they may be
     specified individually, or provided as a topologically  con-
     tinuous 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 a closed interval. This means that  a  range
     of  3:5 gives 3, 4 and 5. Similarly, a range of 9:6 gives 9,
     8, 7, and 6.

FILE NAME PATTERNS
     Mercurial accepts several notations for identifying  one  or
     more files at a time.

     By   default,  Mercurial  treats  filenames  as  shell-style
     extended glob patterns.

     Alternate pattern notations must be specified explicitly.

     Note Patterns specified in .hgignore are not rooted.  Please
          see hg help hgignore for details.

     To use a plain path name without any pattern matching, start
     it with path:. These path names must completely match start-
     ing at the current repository root.

     To  use an extended glob, start a name with glob:. Globs are
     rooted at the current directory; a glob  such  as  *.c  will
     only match files in the current directory ending with .c.



SunOS 5.11                Last change:                         80






Mercurial Manual                                            HG(1)



     The  supported  glob  syntax  extensions are ** to match any
     string across path separators and {a,b} to mean "a or b".

     To use a Perl/Python regular expression, start a  name  with
     re:.  Regexp pattern matching is anchored at the root of the
     repository.

     To read name patterns from a file, use  listfile:  or  list-
     file0:.   The  latter  expects null delimited patterns while
     the former expects line feeds. Each  string  read  from  the
     file is itself treated as a file pattern.

     Plain examples:

     path:foo/bar   a name bar in a directory named foo in the root
                    of the repository
     path:path:name a file or directory named "path:name"

     Glob examples:

     glob:*.c       any name ending in ".c" in the current directory
     *.c            any name ending in ".c" in the current directory
     **.c           any name ending in ".c" in any subdirectory of the
                    current directory including itself.
     foo/*.c        any name ending in ".c" in the directory foo
     foo/**.c       any name ending in ".c" in any subdirectory of foo
                    including itself.

     Regexp examples:

     re:.*\.c$      any name ending in ".c", anywhere in the repository

     File examples:

     listfile:list.txt  read list from list.txt with one file pattern per line
     listfile0:list.txt read list from list.txt with null byte delimiters

     See also hg help filesets.

WORKING WITH PHASES
  What are phases?
     Phases  are a system for tracking which changesets have been
     or should be shared. This helps prevent common mistakes when
     modifying  history  (for  instance,  with  the  mq or rebase
     extensions).

     Each changeset in a repository is in one  of  the  following
     phases:

        o public : changeset is visible on a public server

        o draft : changeset is not yet published



SunOS 5.11                Last change:                         81






Mercurial Manual                                            HG(1)



        o secret  :  changeset  should  not be pushed, pulled, or
          cloned

     These phases are ordered (public < draft <  secret)  and  no
     changeset  can  be  in a lower phase than its ancestors. For
     instance, if a changeset is public, all  its  ancestors  are
     also public. Lastly, changeset phases should only be changed
     towards the public phase.

  How are phases managed?
     For the most part,  phases  should  work  transparently.  By
     default,  a  changeset  is created in the draft phase and is
     moved into the public phase when it  is  pushed  to  another
     repository.

     Once changesets become public, extensions like mq and rebase
     will refuse to operate on them to prevent creating duplicate
     changesets.   Phases  can  also be manually manipulated with
     the hg phase command if needed. See hg  help  -v  phase  for
     examples.

  Phases and servers
     Normally, all servers are publishing by default. This means:

     - all draft changesets that are pulled or cloned appear in phase
     public on the client

     - all draft changesets that are pushed appear as public on both
     client and server

     - secret changesets are neither pushed, pulled, or cloned

     Note Pulling a draft changeset from a publishing server does
          not  mark  it  as  public on the server side due to the
          read-only nature of pull.

     Sometimes it may be desirable to push and pull changesets in
     the  draft  phase to share unfinished work. This can be done
     by setting a repository to disable publishing in its config-
     uration file:

     [phases]
     publish = False

     See  hg  help  config  for more information on configuration
     files.

     Note
     Servers running older versions of Mercurial are  treated  as
     publishing.





SunOS 5.11                Last change:                         82






Mercurial Manual                                            HG(1)



  Examples
        o list changesets in draft or secret phase:

          hg log -r "not public()"

        o change all secret changesets to draft:

          hg phase --draft "secret()"

        o forcibly  move  the  current  changeset and descendants
          from public to draft:

          hg phase --force --draft .

        o show a list of changeset revision and phase:

          hg log --template "{rev} {phase}\n"

        o resynchronize draft changesets  relative  to  a  remote
          repository:

          hg phase -fd "outgoing(URL)"

     See  hg  help phase for more information on manually manipu-
     lating phases.

SPECIFYING SINGLE REVISIONS
     Mercurial supports several ways to specify individual  revi-
     sions.

     A  plain  integer  is treated as a revision number. Negative
     integers are treated as sequential  offsets  from  the  tip,
     with  -1 denoting the tip, -2 denoting the revision prior to
     the tip, and so forth.

     A 40-digit hexadecimal string is treated as a  unique  revi-
     sion identifier.

     A hexadecimal string less than 40 characters long is treated
     as a unique revision identifier and  is  referred  to  as  a
     short-form identifier. A short-form identifier is only valid
     if it is the prefix of exactly one full-length identifier.

     Any other string is treated as a bookmark,  tag,  or  branch
     name.  A  bookmark is a movable pointer to a revision. A tag
     is a permanent name associated with  a  revision.  A  branch
     name  denotes the tipmost revision of that branch. Bookmark,
     tag, and branch names must not contain the ":" character.

     The reserved name "tip" always identifies  the  most  recent
     revision.




SunOS 5.11                Last change:                         83






Mercurial Manual                                            HG(1)



     The  reserved  name "null" indicates the null revision. This
     is the revision of an empty repository, and  the  parent  of
     revision 0.

     The  reserved  name "." indicates the working directory par-
     ent. If no working directory is checked out, it  is  equiva-
     lent to null. If an uncommitted merge is in progress, "." is
     the revision of the first parent.

SPECIFYING REVISION SETS
     Mercurial supports a functional language for selecting a set
     of revisions.

     The  language  supports  a  number  of  predicates which are
     joined by infix  operators.  Parenthesis  can  be  used  for
     grouping.

     Identifiers  such as branch names may need quoting with sin-
     gle or double quotes if they contain characters like - or if
     they match one of the predefined predicates.

     Special  characters  can  be  used  in quoted identifiers by
     escaping them, e.g., \n is interpreted as a newline. To pre-
     vent  them  from  being interpreted, strings can be prefixed
     with r, e.g. r'...'.

     There is a single prefix operator:

     not x

          Changesets not in x. Short form is ! x.

     These are the supported infix operators:

     x::y

          A DAG range, meaning all changesets  that  are  descen-
          dants  of x and ancestors of y, including x and y them-
          selves. If the first endpoint  is  left  out,  this  is
          equivalent  to  ancestors(y), if the second is left out
          it is equivalent to descendants(x).

          An alternative syntax is x..y.

     x:y

          All changesets with revision numbers between x  and  y,
          both  inclusive.  Either endpoint can be left out, they
          default to 0 and tip.

     x and y




SunOS 5.11                Last change:                         84






Mercurial Manual                                            HG(1)



          The intersection of changesets in x and y.  Short  form
          is x & y.

     x or y

          The  union  of  changesets  in  x  and y. There are two
          alternative short forms: x | y and x + y.

     x - y

          Changesets in x but not in y.

     x^n

          The nth parent of x, n == 0, 1, or 2.  For n ==  0,  x;
          for  n  ==  1, the first parent of each changeset in x;
          for n == 2, the second parent of changeset in x.

     x~n

          The nth first ancestor of x; x~0 is x; x~3 is x^^^.

     There is a single postfix operator:

     x^

          Equivalent to x^1, the first parent of  each  changeset
          in x.

     The following predicates are supported:

     adds(pattern)

          Changesets that add a file matching pattern.

     all()

          All changesets, the same as 0:tip.

     ancestor(*changeset)

          Greatest common ancestor of the changesets.

          Accepts  0  or more changesets.  Will return empty list
          when passed no args.  Greatest  common  ancestor  of  a
          single changeset is that changeset.

     ancestors(set)

          Changesets that are ancestors of a changeset in set.

     author(string)



SunOS 5.11                Last change:                         85






Mercurial Manual                                            HG(1)



          Alias for user(string).

     bisect(string)

          Changesets marked in the specified bisect status:

            o good,   bad,   skip:  csets  explicitly  marked  as
              good/bad/skip

            o goods, bads      : csets topologically good/bad

            o range               :  csets  taking  part  in  the
              bisection

            o pruned              : csets that are goods, bads or
              skipped

            o untested            :  csets  whose  fate  is   yet
              unknown

            o ignored             :  csets  ignored  due  to  DAG
              topology

            o current             :  the  cset  currently   being
              bisected

     bookmark([name])

          The named bookmark or all bookmarks.

          If  name  starts with re:, the remainder of the name is
          treated as a regular expression. To  match  a  bookmark
          that actually starts with re:, use the prefix literal:.

     branch(string or set)

          All changesets belonging to the  given  branch  or  the
          branches of the given changesets.

          If string starts with re:, the remainder of the name is
          treated as a regular expression. To match a branch that
          actually starts with re:, use the prefix literal:.

     branchpoint()

          Changesets with more than one child.

     bumped()

          Mutable  changesets  marked  as  successors  of  public
          changesets.




SunOS 5.11                Last change:                         86






Mercurial Manual                                            HG(1)



          Only non-public  and  non-obsolete  changesets  can  be
          bumped.

     bundle()

          Changesets in the bundle.

          Bundle must be specified by the -R option.

     children(set)

          Child changesets of changesets in set.

     closed()

          Changeset is closed.

     contains(pattern)

          Revision  contains a file matching pattern. See hg help
          patterns for information about file patterns.

     converted([id])

          Changesets converted from the given identifier  in  the
          old  repository if present, or all converted changesets
          if no identifier is specified.

     date(interval)

          Changesets within the interval, see hg help dates.

     desc(string)

          Search  commit  message  for  string.  The   match   is
          case-insensitive.

     descendants(set)

          Changesets  which are descendants of changesets in set.

     destination([set])

          Changesets that were created by a graft, transplant  or
          rebase operation, with the given revisions specified as
          the source.  Omitting the optional set is the  same  as
          passing all().

     divergent()

          Final  successors of changesets with an alternative set
          of final successors.



SunOS 5.11                Last change:                         87






Mercurial Manual                                            HG(1)



     draft()

          Changeset in draft phase.

     extinct()

          Obsolete changesets with obsolete descendants only.

     extra(label, [value])

          Changesets with the given label in the extra  metadata,
          with the given optional value.

          If value starts with re:, the remainder of the value is
          treated as a regular expression. To match a value  that
          actually starts with re:, use the prefix literal:.

     file(pattern)

          Changesets affecting files matched by pattern.

          For  a  faster but less accurate result, consider using
          filelog() instead.

     filelog(pattern)

          Changesets connected to the specified filelog.

          For performance reasons, filelog() does not show  every
          changeset  that  affects  the requested file(s). See hg
          help log for  details.  For  a  slower,  more  accurate
          result, use file().

     first(set, [n])

          An alias for limit().

     follow([file])

          An alias for ::. (ancestors of the working copy's first
          parent).  If a filename is specified,  the  history  of
          the given file is followed, including copies.

     grep(regex)

          Like   keyword(string)   but   accepts   a  regex.  Use
          grep(r'...')  to ensure special escape  characters  are
          handled correctly. Unlike keyword(string), the match is
          case-sensitive.

     head()




SunOS 5.11                Last change:                         88






Mercurial Manual                                            HG(1)



          Changeset is a named branch head.

     heads(set)

          Members of set with no children in set.

     hidden()

          Hidden changesets.

     id(string)

          Revision non-ambiguously specified  by  the  given  hex
          string prefix.

     keyword(string)

          Search  commit message, user name, and names of changed
          files for string. The match is case-insensitive.

     last(set, [n])

          Last n members of set, defaulting to 1.

     limit(set, [n])

          First n members of set, defaulting to 1.

     matching(revision [, field])

          Changesets in which a given set of fields match the set
          of fields in the selected revision or set.

          To match more than one field pass the list of fields to
          match separated by spaces (e.g. author description).

          Valid fields are most regular revision fields and  some
          special fields.

          Regular   revision   fields  are  description,  author,
          branch, date, files, phase, parents, substate, user and
          diff.   Note  that  author  and user are synonyms. diff
          refers to the contents of the revision.  Two  revisions
          matching their diff will also match their files.

          Special   fields  are  summary  and  metadata:  summary
          matches the first line of the description.  metadata is
          equivalent  to  matching description user date (i.e. it
          matches the main metadata fields).

          metadata is the default field which  is  used  when  no
          fields are specified. You can match more than one field



SunOS 5.11                Last change:                         89






Mercurial Manual                                            HG(1)



          at a time.

     max(set)

          Changeset with highest revision number in set.

     merge()

          Changeset is a merge changeset.

     min(set)

          Changeset with lowest revision number in set.

     modifies(pattern)

          Changesets modifying files matched by pattern.

     obsolete()

          Mutable changeset with a newer version.

     origin([set])

          Changesets that were specified  as  a  source  for  the
          grafts,  transplants  or rebases that created the given
          revisions.  Omitting the optional set is  the  same  as
          passing  all().  If a changeset created by these opera-
          tions is itself specified as a source for one of  these
          operations,  only  the  source  changeset for the first
          operation is selected.

     outgoing([path])

          Changesets  not  found  in  the  specified  destination
          repository, or the default push location.

     p1([set])

          First  parent  of  changesets  in  set,  or the working
          directory.

     p2([set])

          Second parent of changesets  in  set,  or  the  working
          directory.

     parents([set])

          The  set  of  all parents for all changesets in set, or
          the working directory.




SunOS 5.11                Last change:                         90






Mercurial Manual                                            HG(1)



     present(set)

          An empty set, if any revision in set isn't found;  oth-
          erwise, all revisions in set.

          If  any  of  specified  revisions is not present in the
          local repository, the query is  normally  aborted.  But
          this  predicate  allows  the  query to continue even in
          such cases.

     public()

          Changeset in public phase.

     remote([id [,path]])

          Local revision that corresponds to the given identifier
          in a remote repository, if present. Here, the '.' iden-
          tifier is a synonym for the current local branch.

     removes(pattern)

          Changesets which remove files matching pattern.

     rev(number)

          Revision with the given numeric identifier.

     reverse(set)

          Reverse order of set.

     roots(set)

          Changesets in set with no parent changeset in set.

     secret()

          Changeset in secret phase.

     sort(set[, [-]key...])

          Sort set by keys. The default sort order is  ascending,
          specify a key as -key to sort in descending order.

          The keys can be:

            o rev for the revision number,

            o branch for the branch name,

            o desc for the commit message (description),



SunOS 5.11                Last change:                         91






Mercurial Manual                                            HG(1)



            o user  for  user  name  (author  can  be  used as an
              alias),

            o date for the commit date

     tag([name])

          The specified tag by name, or all tagged  revisions  if
          no name is given.

     unstable()

          Non-obsolete changesets with obsolete ancestors.

     user(string)

          User  name  contains string. The match is case-insensi-
          tive.

          If string starts with re:, the remainder of the  string
          is  treated  as  a  regular expression. To match a user
          that actually contains re:, use the prefix literal:.

     New predicates (known as "aliases") can  be  defined,  using
     any  combination of existing predicates or other aliases. An
     alias definition looks like:

     <alias> = <definition>

     in the revsetalias  section  of  a  Mercurial  configuration
     file.  Arguments  of  the  form $1, $2, etc. are substituted
     from the alias into the definition.

     For example,

     [revsetalias]
     h = heads()
     d($1) = sort($1, date)
     rs($1, $2) = reverse(sort($1, $2))

     defines three aliases, h, d, and rs.  rs(0:tip,  author)  is
     exactly equivalent to reverse(sort(0:tip, author)).

     Command line equivalents for hg log:

     -f    ->  ::.
     -d x  ->  date(x)
     -k x  ->  keyword(x)
     -m    ->  merge()
     -u x  ->  user(x)
     -b x  ->  branch(x)
     -P x  ->  !::x



SunOS 5.11                Last change:                         92






Mercurial Manual                                            HG(1)



     -l x  ->  limit(expr, x)

     Some sample queries:

     o Changesets on the default branch:

       hg log -r "branch(default)"

     o Changesets  on the default branch since tag 1.5 (excluding
       merges):

       hg log -r "branch(default) and 1.5:: and not merge()"

     o Open branch heads:

       hg log -r "head() and not closed()"

     o Changesets between tags 1.3 and 1.5 mentioning "bug"  that
       affect hgext/*:

       hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"

     o Changesets committed in May 2008, sorted by user:

       hg log -r "sort(date('May 2008'), user)"

     o Changesets  mentioning  "bug" or "issue" that are not in a
       tagged release:

       hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tag())"

SUBREPOSITORIES
     Subrepositories  let  you  nest  external  repositories   or
     projects  into  a parent Mercurial repository, and make com-
     mands operate on them as a group.

     Mercurial currently supports Mercurial, Git, and  Subversion
     subrepositories.

     Subrepositories are made of three components:

     1. Nested  repository checkouts. They can appear anywhere in
        the parent working directory.

     2. Nested repository references. They are defined in .hgsub,
        which  should be placed in the root of working directory,
        and tell where the  subrepository  checkouts  come  from.
        Mercurial subrepositories are referenced like:

        path/to/nested = https://example.com/nested/repo/path

        Git and Subversion subrepos are also supported:



SunOS 5.11                Last change:                         93






Mercurial Manual                                            HG(1)



        path/to/nested = [git]git://example.com/nested/repo/path
        path/to/nested = [svn]https://example.com/nested/trunk/path

        where  path/to/nested is the checkout location relatively
        to  the  parent   Mercurial   root,   and   https://exam-
        ple.com/nested/repo/path  is  the source repository path.
        The source can also reference a filesystem path.

        Note that .hgsub does not exist by default  in  Mercurial
        repositories, you have to create and add it to the parent
        repository before using subrepositories.

     3. Nested repository states. They  are  defined  in  .hgsub-
        state,  which is placed in the root of working directory,
        and capture whatever information is required  to  restore
        the subrepositories to the state they were committed in a
        parent  repository  changeset.  Mercurial   automatically
        record  the nested repositories states when committing in
        the parent repository.

     Note
        The .hgsubstate file should not be edited manually.

  Adding a Subrepository
     If .hgsub does not exist, create it and add it to the parent
     repository.  Clone  or  checkout the external projects where
     you want it to live in the parent  repository.  Edit  .hgsub
     and  add the subrepository entry as described above. At this
     point, the subrepository is tracked and the next commit will
     record its state in .hgsubstate and bind it to the committed
     changeset.

  Synchronizing a Subrepository
     Subrepos do not automatically track the latest changeset  of
     their  sources.  Instead,  they are updated to the changeset
     that corresponds with  the  changeset  checked  out  in  the
     top-level changeset. This is so developers always get a con-
     sistent set of  compatible  code  and  libraries  when  they
     update.

     Thus,  updating  subrepos  is a manual process. Simply check
     out target subrepo at the  desired  revision,  test  in  the
     top-level  repo,  then  commit  in  the parent repository to
     record the new combination.

  Deleting a Subrepository
     To remove a subrepository from the parent repository, delete
     its reference from .hgsub, then remove its files.

  Interaction with Mercurial Commands
     add  add  does  not recurse in subrepos unless -S/--subrepos
          is specified.  However, if you specify the full path of



SunOS 5.11                Last change:                         94






Mercurial Manual                                            HG(1)



          a  file  in  a  subrepo,  it will be added even without
          -S/--subrepos specified.  Git and Subversion subreposi-
          tories are currently silently ignored.

     archive
          archive  does  not  recurse  in  subrepositories unless
          -S/--subrepos is specified.

     commit
          commit creates a consistent snapshot of  the  state  of
          the entire project and its subrepositories. If any sub-
          repositories have been modified, Mercurial will  abort.
          Mercurial  can  be  made to instead commit all modified
          subrepositories by specifying -S/--subrepos, or setting
          "ui.commitsubrepos=True"  in  a configuration file (see
          hg help config).  After there are no longer  any  modi-
          fied   subrepositories,  it  records  their  state  and
          finally commits it in the parent repository.

     diff diff does not recurse in subrepos unless  -S/--subrepos
          is  specified.  Changes  are displayed as usual, on the
          subrepositories elements. Git and Subversion subreposi-
          tories are currently silently ignored.

     forget
          forget  currently  only  handles  exact file matches in
          subrepos.  Git and Subversion subrepositories are  cur-
          rently silently ignored.

     incoming
          incoming  does not recurse in subrepos unless -S/--sub-
          repos is specified. Git and Subversion  subrepositories
          are currently silently ignored.

     outgoing
          outgoing  does not recurse in subrepos unless -S/--sub-
          repos is specified. Git and Subversion  subrepositories
          are currently silently ignored.

     pull pull  is  not  recursive  since it is not clear what to
          pull prior to running hg update. Listing and retrieving
          all  subrepositories  changes  referenced by the parent
          repository pulled  changesets  is  expensive  at  best,
          impossible in the Subversion case.

     push Mercurial  will  automatically push all subrepositories
          first when the parent repository is being pushed.  This
          ensures  new  subrepository  changes are available when
          referenced by top-level repositories.  Push is a  no-op
          for Subversion subrepositories.

     status



SunOS 5.11                Last change:                         95






Mercurial Manual                                            HG(1)



          status  does  not  recurse  into subrepositories unless
          -S/--subrepos is specified. Subrepository  changes  are
          displayed as regular Mercurial changes on the subrepos-
          itory elements.  Subversion  subrepositories  are  cur-
          rently silently ignored.

     update
          update  restores  the  subrepos  in the state they were
          originally  committed  in  target  changeset.  If   the
          recorded changeset is not available in the current sub-
          repository, Mercurial will  pull  it  in  first  before
          updating.  This means that updating can require network
          access when using subrepositories.

  Remapping Subrepositories Sources
     A subrepository source location may change during a  project
     life,  invalidating  references stored in the parent reposi-
     tory history. To fix this, rewriting rules can be defined in
     parent  repository  hgrc file or in Mercurial configuration.
     See the [subpaths] section in hgrc(5) for more details.

TEMPLATE USAGE
     Mercurial allows you to customize output of commands through
     templates.  You  can either pass in a template from the com-
     mand line, via the --template option, or select an  existing
     template-style (--style).

     You  can  customize  output for any "log-like" command: log,
     outgoing, incoming, tip, parents, heads and glog.

     Five styles are packaged with Mercurial: default (the  style
     used  when  no  explicit  preference  is  passed),  compact,
     changelog, phases and xml.  Usage:

     $ hg log -r1 --style changelog

     A template is a piece of text, with markup to  invoke  vari-
     able expansion:

     $ hg log -r1 --template "{node}\n"
     b56ce7b07c52de7d5fd79fb89701ea538af65746

     Strings  in curly braces are called keywords. The availabil-
     ity of keywords depends on the exact  context  of  the  tem-
     plater.  These keywords are usually available for templating
     a log-like command:

     author
          String. The unmodified author of the changeset.

     bisect
          String. The changeset bisection status.



SunOS 5.11                Last change:                         96






Mercurial Manual                                            HG(1)



     bookmarks
          List of strings.  Any  bookmarks  associated  with  the
          changeset.

     branch
          String.  The  name of the branch on which the changeset
          was committed.

     branches
          List of strings. The name of the branch  on  which  the
          changeset  was  committed.  Will be empty if the branch
          name was default.

     children
          List of strings. The children of the changeset.

     date Date information. The date when the changeset was  com-
          mitted.

     desc String. The text of the changeset description.

     diffstat
          String.  Statistics  of changes with the following for-
          mat: "modified files: +added/-removed lines"

     file_adds
          List of strings. Files added by this changeset.

     file_copies
          List of strings. Files copied in  this  changeset  with
          their sources.

     file_copies_switch
          List  of strings. Like "file_copies" but displayed only
          if the --copied switch is set.

     file_dels
          List of strings. Files removed by this changeset.

     file_mods
          List of strings. Files modified by this changeset.

     files
          List of strings. All files modified, added, or  removed
          by this changeset.

     latesttag
          String. Most recent global tag in the ancestors of this
          changeset.

     latesttagdistance
          Integer. Longest path to the latest tag.



SunOS 5.11                Last change:                         97






Mercurial Manual                                            HG(1)



     node String. The changeset  identification  hash,  as  a  40
          hexadecimal digit string.

     p1node
          String.  The  identification  hash  of  the changeset's
          first parent, as a 40 digit hexadecimal string. If  the
          changeset has no parents, all digits are 0.

     p1rev
          Integer.  The  repository-local  revision number of the
          changeset's first parent, or -1 if the changeset has no
          parents.

     p2node
          String. The identification hash of the changeset's sec-
          ond parent, as a 40 digit hexadecimal  string.  If  the
          changeset has no second parent, all digits are 0.

     p2rev
          Integer.  The  repository-local  revision number of the
          changeset's second parent, or -1 if the  changeset  has
          no second parent.

     parents
          List  of  strings.  The  parents  of  the  changeset in
          "rev:node" format. If the changeset has only one "natu-
          ral"  parent  (the  predecessor  revision)  nothing  is
          shown.

     phase
          String. The changeset phase name.

     phaseidx
          Integer. The changeset phase index.

     rev  Integer. The repository-local changeset  revision  num-
          ber.

     tags List  of  strings. Any tags associated with the change-
          set.

     The "date" keyword does not produce  human-readable  output.
     If you want to use a date in your output, you can use a fil-
     ter to process it. Filters  are  functions  which  return  a
     string  based  on  the  input  variable.  Be sure to use the
     stringify filter first when you're applying  a  string-input
     filter  to  a  list-like input variable.  You can also use a
     chain of filters to get the desired output:

     $ hg tip --template "{date|isodate}\n"
     2008-08-21 18:22 +0000




SunOS 5.11                Last change:                         98






Mercurial Manual                                            HG(1)



     List of filters:

     addbreaks
          Any text. Add an XHTML "<br />" tag before the  end  of
          every line except the last.

     age  Date.  Returns  a  human-readable  date/time difference
          between the given date/time and the current  date/time.

     basename
          Any  text.  Treats  the text as a path, and returns the
          last component of the path after splitting by the  path
          separator  (ignoring trailing separators). For example,
          "foo/bar/baz" becomes  "baz"  and  "foo/bar//"  becomes
          "bar".

     date Date.  Returns  a date in a Unix date format, including
          the timezone: "Mon Sep 04 15:13:13 2006 0700".

     domain
          Any text. Finds the first string  that  looks  like  an
          email  address, and extracts just the domain component.
          Example: User <user@example.com> becomes example.com.

     email
          Any text. Extracts the first string that looks like  an
          email address. Example: User <user@example.com> becomes
          user@example.com.

     emailuser
          Any text. Returns the user portion of an email address.

     escape
          Any  text.  Replaces  the  special XML/XHTML characters
          "&", "<" and ">" with XML entities, and filters out NUL
          characters.

     fill68
          Any text. Wraps the text to fit in 68 columns.

     fill76
          Any text. Wraps the text to fit in 76 columns.

     firstline
          Any text. Returns the first line of text.

     hex  Any  text.  Convert  a binary Mercurial node identifier
          into its long hexadecimal representation.

     hgdate
          Date.  Returns  the  date  as  a   pair   of   numbers:
          "1157407993 25200" (Unix timestamp, timezone offset).



SunOS 5.11                Last change:                         99






Mercurial Manual                                            HG(1)



     isodate
          Date.  Returns the date in ISO 8601 format: "2009-08-18
          13:00 +0200".

     isodatesec
          Date. Returns the date in ISO  8601  format,  including
          seconds:  "2009-08-18  13:00:13  +0200".  See  also the
          rfc3339date filter.

     localdate
          Date. Converts a date to local date.

     nonempty
          Any text. Returns '(none)' if the string is empty.

     obfuscate
          Any text. Returns the input text rendered as a sequence
          of XML entities.

     person
          Any  text.  Returns  the  name before an email address,
          interpreting it as per RFC 5322.

     rfc3339date
          Date. Returns a date using  the  Internet  date  format
          specified in RFC 3339: "2009-08-18T13:00:13+02:00".

     rfc822date
          Date.  Returns  a  date  using  the same format used in
          email headers: "Tue, 18 Aug 2009 13:00:13 +0200".

     short
          Changeset hash. Returns the short form of  a  changeset
          hash, i.e. a 12 hexadecimal digit string.

     shortbisect
          Any  text.  Treats  text  as  a  bisection  status, and
          returns a single-character representing the status  (G:
          good,  B:  bad,  S:  skipped, U: untested, I: ignored).
          Returns single space if text is not a  valid  bisection
          status.

     shortdate
          Date. Returns a date like "2006-09-18".

     stringify
          Any  type. Turns the value into text by converting val-
          ues into text and concatenating them.

     strip
          Any text. Strips all leading and trailing whitespace.




SunOS 5.11                Last change:                        100






Mercurial Manual                                            HG(1)



     stripdir
          Treat the text as path and strip a directory level,  if
          possible.  For  example,  "foo"  and  "foo/bar" becomes
          "foo".

     tabindent
          Any text. Returns the text, with every  non-empty  line
          except the first starting with a tab character.

     urlescape
          Any  text.  Escapes all "special" characters. For exam-
          ple, "foo bar" becomes "foo%20bar".

     user Any text. Returns a short representation of a user name
          or email address.

     Note  that  a  filter  is nothing more than a function call,
     i.e.  expr|filter is equivalent to filter(expr).

     In addition to filters, there are some basic built-in  func-
     tions:

     o date(date[, fmt])

     o fill(text[, width])

     o get(dict, key)

     o if(expr, then[, else])

     o ifeq(expr, expr, then[, else])

     o join(list, sep)

     o label(label, expr)

     o rstdoc(text, style)

     o strip(text[, chars])

     o sub(pat, repl, expr)

     Also,  for  any  expression  that returns a list, there is a
     list operator:

     o expr % "{template}"

     Some sample command line templates:

     o Format lists, e.g. files:

       $ hg log -r 0 --template "files:\n{files % '  {file}\n'}"



SunOS 5.11                Last change:                        101






Mercurial Manual                                            HG(1)



     o Join the list of files with a ", ":

       $ hg log -r 0 --template "files: {join(files, ', ')}\n"

     o Format date:

       $ hg log -r 0 --template "{date(date, '%Y')}\n"

     o Output the description set to a fill-width of 30:

       $ hg log -r 0 --template "{fill(desc, '30')}"

     o Use a conditional to test for the default branch:

       $ hg log -r 0 --template "{ifeq(branch, 'default', 'on the main branch',
       'on branch {branch}')}\n"

     o Append a newline if not empty:

       $ hg tip --template "{if(author, '{author}\n')}"

     o Label the output for use with the color extension:

       $ hg log -r 0 --template "{label('changeset.{phase}', node|short)}\n"

     o Invert the firstline filter, i.e. everything but the first
       line:

       $ hg log -r 0 --template "{sub(r'^.*\n?\n?', '', desc)}\n"

URL PATHS
     Valid URLs are of the form:

     local/filesystem/path[#revision]
     file://local/filesystem/path[#revision]
     http://[user[:pass]@]host[:port]/[path][#revision]
     https://[user[:pass]@]host[:port]/[path][#revision]
     ssh://[user@]host[:port]/[path][#revision]

     Paths  in the local filesystem can either point to Mercurial
     repositories or to bundle files (as created by hg bundle  or
     hg incoming --bundle). See also hg help paths.

     An  optional  identifier  after  #  indicates  a  particular
     branch, tag, or changeset to use from the remote repository.
     See also hg help revisions.

     Some  features, such as pushing to http:// and https:// URLs
     are only possible if the feature is  explicitly  enabled  on
     the remote Mercurial server.

     Note  that  the  security  of  HTTPS  URLs depends on proper



SunOS 5.11                Last change:                        102






Mercurial Manual                                            HG(1)



     configuration of web.cacerts.

     Some notes about using SSH with Mercurial:

     o SSH requires an accessible shell account on  the  destina-
       tion machine and a copy of hg in the remote path or speci-
       fied with as remotecmd.

     o path is relative to the remote user's  home  directory  by
       default.  Use  an  extra  slash  at the start of a path to
       specify an absolute path:

       ssh://example.com//tmp/repository

     o Mercurial doesn't use its own  compression  via  SSH;  the
       right  thing  to do is to configure it in your ~/.ssh/con-
       fig, e.g.:

       Host *.mylocalnetwork.example.com
         Compression no
       Host *
         Compression yes

       Alternatively specify "ssh -C" as your ssh command in your
       configuration  file or with the --ssh command line option.

     These URLs can all be stored in your configuration file with
     path aliases under the [paths] section like so:

     [paths]
     alias1 = URL1
     alias2 = URL2
     ...

     You  can  then use the alias for any command that uses a URL
     (for example hg pull alias1  will  be  treated  as  hg  pull
     URL1).

     Two  path  aliases  are  special  because  they  are used as
     defaults when you do not provide the URL to a command:

     default:
          When you create a repository with hg clone,  the  clone
          command  saves the location of the source repository as
          the new repository's 'default' path. This is then  used
          when  you  omit  path from push- and pull-like commands
          (including incoming and outgoing).

     default-push:
          The  push  command  will  look   for   a   path   named
          'default-push',  and  prefer  it over 'default' if both
          are defined.



SunOS 5.11                Last change:                        103






Mercurial Manual                                            HG(1)



EXTENSIONS
     This section contains help for extensions that are  distrib-
     uted  together  with Mercurial. Help for other extensions is
     available in the help system.

  acl
     hooks for controlling repository access

     This hook makes it possible to allow or deny write access to
     given  branches  and  paths  of  a repository when receiving
     incoming changesets via pretxnchangegroup and  pretxncommit.

     The authorization is matched based on the local user name on
     the system where the hook runs, and not the committer of the
     original changeset (since the latter is merely informative).

     The acl hook is best used along with a restricted shell like
     hgsh,  preventing  authenticating  users from doing anything
     other than pushing or pulling. The hook is not safe  to  use
     if  users  have  interactive  shell access, as they can then
     disable the hook. Nor is it safe if remote  users  share  an
     account, because then there is no way to distinguish them.

     The order in which access checks are performed is:

     1. Deny  list for branches (section acl.deny.branches)

     2. Allow list for branches (section acl.allow.branches)

     3. Deny  list for paths    (section acl.deny)

     4. Allow list for paths    (section acl.allow)

     The allow and deny sections take key-value pairs.

  Branch-based Access Control
     Use the acl.deny.branches and acl.allow.branches sections to
     have branch-based access control. Keys in these sections can
     be either:

     o a branch name, or

     o an asterisk, to match any branch;

     The corresponding values can be either:

     o a comma-separated list containing users and groups, or

     o an asterisk, to match anyone;

     You can add the "!" prefix to a user or group name to invert
     the sense of the match.



SunOS 5.11                Last change:                        104






Mercurial Manual                                            HG(1)



  Path-based Access Control
     Use the acl.deny and acl.allow sections to  have  path-based
     access control. Keys in these sections accept a subtree pat-
     tern (with a glob syntax by default). The corresponding val-
     ues follow the same syntax as the other sections above.

  Groups
     Group  names must be prefixed with an @ symbol. Specifying a
     group name has the same effect as specifying all  the  users
     in that group.

     You  can define group members in the acl.groups section.  If
     a group name is not defined there, and Mercurial is  running
     under  a  Unix-like  system, the list of users will be taken
     from the OS.  Otherwise, an exception will be raised.

  Example Configuration
     [hooks]

     # Use this if you want to check access restrictions at commit time
     pretxncommit.acl = python:hgext.acl.hook

     # Use this if you want to check access restrictions for pull, push,
     # bundle and serve.
     pretxnchangegroup.acl = python:hgext.acl.hook

     [acl]
     # Allow or deny access for incoming changes only if their source is
     # listed here, let them pass otherwise. Source is "serve" for all
     # remote access (http or ssh), "push", "pull" or "bundle" when the
     # related commands are run locally.
     # Default: serve
     sources = serve

     [acl.deny.branches]

     # Everyone is denied to the frozen branch:
     frozen-branch = *

     # A bad user is denied on all branches:
     * = bad-user

     [acl.allow.branches]

     # A few users are allowed on branch-a:
     branch-a = user-1, user-2, user-3

     # Only one user is allowed on branch-b:
     branch-b = user-1

     # The super user is allowed on any branch:
     * = super-user



SunOS 5.11                Last change:                        105






Mercurial Manual                                            HG(1)



     # Everyone is allowed on branch-for-tests:
     branch-for-tests = *

     [acl.deny]
     # This list is checked first. If a match is found, acl.allow is not
     # checked. All users are granted access if acl.deny is not present.
     # Format for both lists: glob pattern = user, ..., @group, ...

     # To match everyone, use an asterisk for the user:
     # my/glob/pattern = *

     # user6 will not have write access to any file:
     ** = user6

     # Group "hg-denied" will not have write access to any file:
     ** = @hg-denied

     # Nobody will be able to change "DONT-TOUCH-THIS.txt", despite
     # everyone being able to change all other files. See below.
     src/main/resources/DONT-TOUCH-THIS.txt = *

     [acl.allow]
     # if acl.allow is not present, all users are allowed by default
     # empty acl.allow = no users allowed

     # User "doc_writer" has write access to any file under the "docs"
     # folder:
     docs/** = doc_writer

     # User "jack" and group "designers" have write access to any file
     # under the "images" folder:
     images/** = jack, @designers

     # Everyone (except for "user6" and "@hg-denied" - see acl.deny above)
     # will have write access to any file under the "resources" folder
     # (except for 1 file. See acl.deny):
     src/main/resources/** = *

     .hgtags = release_engineer

  Examples using the ! prefix
     Suppose there's a branch that only a given user  (or  group)
     should  be  able  to push to, and you don't want to restrict
     access to any other branch that may be created.

     The "!" prefix allows you to prevent anyone except  a  given
     user  or group to push changesets in a given branch or path.

     In the examples below, we will: 1)  Deny  access  to  branch
     "ring"  to anyone but user "gollum" 2) Deny access to branch
     "lake" to anyone but members of the group "hobbit"  3)  Deny
     access to a file to anyone but user "gollum"



SunOS 5.11                Last change:                        106






Mercurial Manual                                            HG(1)



     [acl.allow.branches]
     # Empty

     [acl.deny.branches]

     # 1) only 'gollum' can commit to branch 'ring';
     # 'gollum' and anyone else can still commit to any other branch.
     ring = !gollum

     # 2) only members of the group 'hobbit' can commit to branch 'lake';
     # 'hobbit' members and anyone else can still commit to any other branch.
     lake = !@hobbit

     # You can also deny access based on file paths:

     [acl.allow]
     # Empty

     [acl.deny]
     # 3) only 'gollum' can change the file below;
     # 'gollum' and anyone else can still change any other file.
     /misty/mountains/cave/ring = !gollum

  blackbox
     log repository events to a blackbox for debugging

     Logs event information to .hg/blackbox.log to help debug and
     diagnose problems.  The events that get logged can  be  con-
     figured via the blackbox.track config key.  Examples:

     [blackbox]
     track = *

     [blackbox]
     track = command, commandfinish, commandexception, exthook, pythonhook

     [blackbox]
     track = incoming

     [blackbox]
     # limit the size of a log file
     maxsize = 1.5 MB
     # rotate up to N log files when the current one gets too big
     maxfiles = 3

  Commands
  blackbox
     hg blackbox [OPTION]...

     view the recent repository events

     Options:



SunOS 5.11                Last change:                        107






Mercurial Manual                                            HG(1)



     -l, --limit
          the number of events to show (default: 10)

  bugzilla
     hooks for integrating with the Bugzilla bug tracker

     This  hook  extension adds comments on bugs in Bugzilla when
     changesets that refer to bugs by Bugzilla ID are  seen.  The
     comment is formatted using the Mercurial template mechanism.

     The bug references can  optionally  include  an  update  for
     Bugzilla  of  the  hours  spent working on the bug. Bugs can
     also be marked fixed.

     Three basic modes of access to Bugzilla are provided:

     1. Access  via  the  Bugzilla  XMLRPC  interface.   Requires
        Bugzilla 3.4 or later.

     2. Check  data  via the Bugzilla XMLRPC interface and submit
        bug  change  via  email  to  Bugzilla  email   interface.
        Requires Bugzilla 3.4 or later.

     3. Writing  directly to the Bugzilla database. Only Bugzilla
        installations using MySQL are supported. Requires  Python
        MySQLdb.

     Writing  directly  to  the database is susceptible to schema
     changes, and relies on a Bugzilla contrib script to send out
     bug change notification emails. This script runs as the user
     running Mercurial, must be run on the host with the Bugzilla
     install, and requires permission to read Bugzilla configura-
     tion details and the necessary MySQL user  and  password  to
     have  full access rights to the Bugzilla database. For these
     reasons this access mode is now considered  deprecated,  and
     will not be updated for new Bugzilla versions going forward.
     Only adding comments is supported in this access mode.

     Access via XMLRPC needs a Bugzilla username and password  to
     be  specified in the configuration. Comments are added under
     that username. Since the configuration must be  readable  by
     all  Mercurial  users,  it is recommended that the rights of
     that user are restricted in Bugzilla to the  minimum  neces-
     sary  to  add comments. Marking bugs fixed requires Bugzilla
     4.0 and later.

     Access via XMLRPC/email uses XMLRPC to query  Bugzilla,  but
     sends  email  to the Bugzilla email interface to submit com-
     ments to bugs.  The From: address in the email is set to the
     email  address of the Mercurial user, so the comment appears
     to come from the Mercurial user. In the event that the  Mer-
     curial  user  email  is  not  recognized  by  Bugzilla  as a



SunOS 5.11                Last change:                        108






Mercurial Manual                                            HG(1)



     Bugzilla user, the email associated with the Bugzilla  user-
     name used to log into Bugzilla is used instead as the source
     of the comment. Marking bugs fixed works  on  all  supported
     Bugzilla versions.

     Configuration items common to all access modes:

     bugzilla.version
          The access type to use. Values recognized are:

            xmlrpc

                 Bugzilla XMLRPC interface.

            xmlrpc+email

                 Bugzilla XMLRPC and email interfaces.

            3.0

                 MySQL access, Bugzilla 3.0 and later.

            2.18

                 MySQL  access,  Bugzilla  2.18 and up to but not
                 including 3.0.

            2.16

                 MySQL access, Bugzilla 2.16 and up  to  but  not
                 including 2.18.

     bugzilla.regexp
          Regular  expression  to  match  bug  IDs  for update in
          changeset commit message.  It  must  contain  one  "()"
          named  group  <ids> containing the bug IDs separated by
          non-digit characters. It may also contain a named group
          <hours>  with  a floating-point number giving the hours
          worked on the bug. If no named groups are present,  the
          first "()" group is assumed to contain the bug IDs, and
          work  time  is  not  updated.  The  default  expression
          matches  Bug  1234, Bug no. 1234, Bug number 1234, Bugs
          1234,5678, Bug 1234 and 5678  and  variations  thereof,
          followed  by  an  hours  number prefixed by h or hours,
          e.g. hours 1.5. Matching is case insensitive.

     bugzilla.fixregexp
          Regular expression to match bug IDs for  marking  fixed
          in  changeset  commit message. This must contain a "()"
          named group <ids>` containing the bug IDs separated  by
          non-digit characters. It may also contain a named group
          ``<hours> with a floating-point number giving the hours



SunOS 5.11                Last change:                        109






Mercurial Manual                                            HG(1)



          worked  on the bug. If no named groups are present, the
          first "()" group is assumed to contain the bug IDs, and
          work  time  is  not  updated.  The  default  expression
          matches  Fixes  1234,  Fixes  bug  1234,   Fixes   bugs
          1234,5678,  Fixes 1234 and 5678 and variations thereof,
          followed by an hours number prefixed  by  h  or  hours,
          e.g. hours 1.5. Matching is case insensitive.

     bugzilla.fixstatus
          The  status to set a bug to when marking fixed. Default
          RESOLVED.

     bugzilla.fixresolution
          The resolution to set a  bug  to  when  marking  fixed.
          Default FIXED.

     bugzilla.style
          The style file to use when formatting comments.

     bugzilla.template
          Template  to  use  when  formatting comments. Overrides
          style if specified. In addition to the usual  Mercurial
          keywords, the extension specifies:

            {bug}

                 The Bugzilla bug ID.

            {root}

                 The full pathname of the Mercurial repository.

            {webroot}

                 Stripped pathname of the Mercurial repository.

            {hgweb}

                 Base URL for browsing Mercurial repositories.

     Default  changeset {node|short} in repo {root} refers to bug
     {bug}.\ndetails:\n\t{desc|tabindent}

     bugzilla.strip
          The number of path separator characters to  strip  from
          the  front  of the Mercurial repository path ({root} in
          templates) to produce {webroot}. For example, a reposi-
          tory  with {root} /var/local/my-project with a strip of
          2 gives a value for {webroot} of my-project. Default 0.

     web.baseurl
          Base   URL   for   browsing   Mercurial   repositories.



SunOS 5.11                Last change:                        110






Mercurial Manual                                            HG(1)



          Referenced from templates as {hgweb}.

     Configuration items common to XMLRPC+email and MySQL  access
     modes:

     bugzilla.usermap
          Path  of  file  containing Mercurial committer email to
          Bugzilla user email mappings. If  specified,  the  file
          should contain one mapping per line:

          committer = Bugzilla user

          See also the [usermap] section.

     The  [usermap] section is used to specify mappings of Mercu-
     rial committer  email  to  Bugzilla  user  email.  See  also
     bugzilla.usermap.   Contains entries of the form committer =
     Bugzilla user.

     XMLRPC access mode configuration:

     bugzilla.bzurl
          The base URL for the  Bugzilla  installation.   Default
          http://localhost/bugzilla.

     bugzilla.user
          The  username  to  use to log into Bugzilla via XMLRPC.
          Default bugs.

     bugzilla.password
          The password for Bugzilla login.

     XMLRPC+email access mode uses the XMLRPC access mode config-
     uration items, and also:

     bugzilla.bzemail
          The Bugzilla email address.

     In  addition,  the  Mercurial email settings must be config-
     ured. See the documentation in hgrc(5), sections [email] and
     [smtp].

     MySQL access mode configuration:

     bugzilla.host
          Hostname of the MySQL server holding the Bugzilla data-
          base.  Default localhost.

     bugzilla.db
          Name of the Bugzilla database in MySQL. Default bugs.

     bugzilla.user



SunOS 5.11                Last change:                        111






Mercurial Manual                                            HG(1)



          Username to use to access MySQL server. Default bugs.

     bugzilla.password
          Password to use to access MySQL server.

     bugzilla.timeout
          Database connection timeout (seconds). Default 5.

     bugzilla.bzuser
          Fallback Bugzilla user name to record comments with, if
          changeset committer cannot be found as a Bugzilla user.

     bugzilla.bzdir
          Bugzilla install directory.  Used  by  default  notify.
          Default /var/www/html/bugzilla.

     bugzilla.notify
          The  command  to run to get Bugzilla to send bug change
          notification emails. Substitutes  from  a  map  with  3
          keys,  bzdir,  id (bug id) and user (committer bugzilla
          email). Default depends on version; from 2.18 it is "cd
          %(bzdir)s  &&  perl  -T  contrib/sendbugmail.pl  %(id)s
          %(user)s".

     Activating the extension:

     [extensions]
     bugzilla =

     [hooks]
     # run bugzilla hook on every change pulled or pushed in here
     incoming.bugzilla = python:hgext.bugzilla.hook

     Example configurations:

     XMLRPC example configuration.  This  uses  the  Bugzilla  at
     http://my-project.org/bugzilla,  logging  in  as  user  bug-
     mail@my-project.org with password plugh. It is used  with  a
     collection       of      Mercurial      repositories      in
     /var/local/hg/repos/,    with    a    web    interface    at
     http://my-project.org/hg.

     [bugzilla]
     bzurl=http://my-project.org/bugzilla
     user=bugmail@my-project.org
     password=plugh
     version=xmlrpc
     template=Changeset {node|short} in {root|basename}.
              {hgweb}/{webroot}/rev/{node|short}\n
              {desc}\n
     strip=5




SunOS 5.11                Last change:                        112






Mercurial Manual                                            HG(1)



     [web]
     baseurl=http://my-project.org/hg

     XMLRPC+email  example  configuration. This uses the Bugzilla
     at http://my-project.org/bugzilla, logging in as  user  bug-
     mail@my-project.org  with  password plugh. It is used with a
     collection      of      Mercurial      repositories       in
     /var/local/hg/repos/,    with    a    web    interface    at
     http://my-project.org/hg.  Bug  comments  are  sent  to  the
     Bugzilla email address bugzilla@my-project.org.

     [bugzilla]
     bzurl=http://my-project.org/bugzilla
     user=bugmail@my-project.org
     password=plugh
     version=xmlrpc
     bzemail=bugzilla@my-project.org
     template=Changeset {node|short} in {root|basename}.
              {hgweb}/{webroot}/rev/{node|short}\n
              {desc}\n
     strip=5

     [web]
     baseurl=http://my-project.org/hg

     [usermap]
     user@emaildomain.com=user.name@bugzilladomain.com

     MySQL  example  configuration. This has a local Bugzilla 3.2
     installation in /opt/bugzilla-3.2. The MySQL database is  on
     localhost,  the  Bugzilla database name is bugs and MySQL is
     accessed with MySQL username bugs password XYZZY. It is used
     with    a    collection   of   Mercurial   repositories   in
     /var/local/hg/repos/,    with    a    web    interface    at
     http://my-project.org/hg.

     [bugzilla]
     host=localhost
     password=XYZZY
     version=3.0
     bzuser=unknown@domain.com
     bzdir=/opt/bugzilla-3.2
     template=Changeset {node|short} in {root|basename}.
              {hgweb}/{webroot}/rev/{node|short}\n
              {desc}\n
     strip=5

     [web]
     baseurl=http://my-project.org/hg

     [usermap]
     user@emaildomain.com=user.name@bugzilladomain.com



SunOS 5.11                Last change:                        113






Mercurial Manual                                            HG(1)



     All  the  above  add a comment to the Bugzilla bug record of
     the form:

     Changeset 3b16791d6642 in repository-name.
     http://my-project.org/hg/repository-name/rev/3b16791d6642

     Changeset commit comment. Bug 1234.

  children
     command to display child changesets (DEPRECATED)

     This extension is deprecated.  You  should  use  hg  log  -r
     "children(REV)" instead.

  Commands
  children
     hg children [-r REV] [FILE]

     Print  the children of the working directory's revisions. If
     a revision is given via -r/--rev, the children of that revi-
     sion  will be printed. If a file argument is given, revision
     in which the file was last changed (after the working direc-
     tory revision or the argument to --rev if given) is printed.

     Options:

     -r, --rev
          show children of the specified revision

     --style
          display using template map file

     --template
          display with template

  churn
     command to display statistics about repository history

  Commands
  churn
     hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]

     This command will display a histogram representing the  num-
     ber  of changed lines or revisions, grouped according to the
     given template. The default template will group  changes  by
     author.   The  --dateformat  option may be used to group the
     results by date instead.

     Statistics are based on the  number  of  changed  lines,  or
     alternatively  the  number  of  matching  revisions  if  the
     --changesets option is specified.




SunOS 5.11                Last change:                        114






Mercurial Manual                                            HG(1)



     Examples:

     # display count of changed lines for every committer
     hg churn -t "{author|email}"

     # display daily activity graph
     hg churn -f "%H" -s -c

     # display activity of developers by month
     hg churn -f "%Y-%m" -s -c

     # display count of lines changed in every year
     hg churn -f "%Y" -s

     It is possible to map alternate email addresses  to  a  main
     address by providing a file using the following format:

     <alias email> = <actual email>

     Such a file may be specified with the --aliases option, oth-
     erwise a .hgchurn file will be looked  for  in  the  working
     directory  root.   Aliases  will be split from the rightmost
     "=".

     Options:

     -r, --rev
          count rate for the specified revision or range

     -d, --date
          count rate for revisions matching date spec

     -t, --template
          template to group changesets (default: {author|email})

     -f, --dateformat
          strftime-compatible format for grouping by date

     -c, --changesets
          count rate by number of changesets

     -s, --sort
          sort by key (default: sort by count)

     --diffstat
          display added/removed lines separately

     --aliases
          file with email aliases

     -I, --include
          include names matching the given patterns



SunOS 5.11                Last change:                        115






Mercurial Manual                                            HG(1)



     -X, --exclude
          exclude names matching the given patterns

  color
     colorize output from some commands

     This extension modifies the status and resolve  commands  to
     add  color  to  their  output  to  reflect  file status, the
     qseries  command  to  add  color  to  reflect  patch  status
     (applied,  unapplied, missing), and to diff-related commands
     to highlight additions, removals, diff headers, and trailing
     whitespace.

     Other effects in addition to color, like bold and underlined
     text, are also available. By default, the terminfo  database
     is  used to find the terminal codes used to change color and
     effect.  If terminfo is not available, then effects are ren-
     dered with the ECMA-48 SGR control function (aka ANSI escape
     codes).

     Default effects may be overridden  from  your  configuration
     file:

     [color]
     status.modified = blue bold underline red_background
     status.added = green bold
     status.removed = red bold blue_background
     status.deleted = cyan bold underline
     status.unknown = magenta bold underline
     status.ignored = black bold

     # 'none' turns off all effects
     status.clean = none
     status.copied = none

     qseries.applied = blue bold underline
     qseries.unapplied = black bold
     qseries.missing = red bold

     diff.diffline = bold
     diff.extended = cyan bold
     diff.file_a = red bold
     diff.file_b = green bold
     diff.hunk = magenta
     diff.deleted = red
     diff.inserted = green
     diff.changed = white
     diff.trailingwhitespace = bold red_background

     resolve.unresolved = red bold
     resolve.resolved = green bold




SunOS 5.11                Last change:                        116






Mercurial Manual                                            HG(1)



     bookmarks.current = green

     branches.active = none
     branches.closed = black bold
     branches.current = green
     branches.inactive = none

     tags.normal = green
     tags.local = black bold

     rebase.rebased = blue
     rebase.remaining = red bold

     shelve.age = cyan
     shelve.newest = green bold
     shelve.name = blue bold

     histedit.remaining = red bold

     The  available effects in terminfo mode are 'blink', 'bold',
     'dim', 'inverse',  'invisible',  'italic',  'standout',  and
     'underline';  in  ECMA-48  mode,  the  options  are  'bold',
     'inverse', 'italic', and 'underline'.  How each is  rendered
     depends on the terminal emulator.  Some may not be available
     for a given terminal type, and will be silently ignored.

     Note that on some systems, terminfo mode may cause  problems
     when  using color with the pager extension and less -R. less
     with the -R option will only display  ECMA-48  color  codes,
     and terminfo mode may sometimes emit codes that less doesn't
     understand. You can work around this by  either  using  ansi
     mode  (or  auto  mode), or by using less -r (which will pass
     through all terminal control codes, not just  color  control
     codes).

     Because  there  are  only eight standard colors, this module
     allows you to define color names for other color slots which
     might be available for your terminal type, assuming terminfo
     mode.  For instance:

     color.brightblue = 12
     color.pink = 207
     color.orange = 202

     to set 'brightblue' to color slot 12 (useful  for  16  color
     terminals  that  have  brighter  colors defined in the upper
     eight) and, 'pink'  and  'orange'  to  colors  in  256-color
     xterm's  default  color cube.  These defined colors may then
     be used as any of the pre-defined eight, including appending
     '_background' to set the background to that color.

     By default, the color extension will use ANSI mode (or win32



SunOS 5.11                Last change:                        117






Mercurial Manual                                            HG(1)



     mode on Windows) if it detects a terminal. To override  auto
     mode (to enable terminfo mode, for example), set the follow-
     ing configuration option:

     [color]
     mode = terminfo

     Any value other than 'ansi', 'win32', 'terminfo', or  'auto'
     will disable color.

  convert
     import  revisions  from foreign VCS repositories into Mercu-
     rial

  Commands
  convert
     hg convert [OPTION]... SOURCE [DEST [REVMAP]]

     Accepted source formats [identifiers]:

     o Mercurial [hg]

     o CVS [cvs]

     o Darcs [darcs]

     o git [git]

     o Subversion [svn]

     o Monotone [mtn]

     o GNU Arch [gnuarch]

     o Bazaar [bzr]

     o Perforce [p4]

     Accepted destination formats [identifiers]:

     o Mercurial [hg]

     o Subversion [svn] (history on branches is not preserved)

     If no revision is given, all revisions  will  be  converted.
     Otherwise, convert will only import up to the named revision
     (given in a format understood by the source).

     If no destination directory name is specified,  it  defaults
     to the basename of the source with -hg appended. If the des-
     tination repository doesn't exist, it will be created.




SunOS 5.11                Last change:                        118






Mercurial Manual                                            HG(1)



     By default, all sources except Mercurial will use  --branch-
     sort.   Mercurial  uses  --sourcesort  to  preserve original
     revision  numbers  order.  Sort  modes  have  the  following
     effects:

     --branchsort
          convert  from  parent  to child revision when possible,
          which means branches are usually  converted  one  after
          the other. It generates more compact repositories.

     --datesort
          sort  revisions  by  date.  Converted repositories have
          good-looking changelogs but are often an order of  mag-
          nitude larger than the same ones generated by --branch-
          sort.

     --sourcesort
          try to preserve source revisions order, only  supported
          by Mercurial sources.

     --closesort
          try  to  move  closed revisions as close as possible to
          parent branches, only supported by Mercurial sources.

     If REVMAP isn't given, it will be put in a default  location
     (<dest>/.hg/shamap  by default). The REVMAP is a simple text
     file that maps each source commit ID to the  destination  ID
     for that revision, like so:

     <source ID> <destination ID>

     If  the file doesn't exist, it's automatically created. It's
     updated on each commit copied, so hg convert can  be  inter-
     rupted and can be run repeatedly to copy new commits.

     The  authormap  is  a simple text file that maps each source
     commit author to a destination commit author.  It  is  handy
     for  source  SCMs  that  use unix logins to identify authors
     (e.g.: CVS). One line per author mapping and the line format
     is:

     source author = destination author

     Empty lines and lines starting with a # are ignored.

     The filemap is a file that allows filtering and remapping of
     files and directories. Each line can contain one of the fol-
     lowing directives:

     include path/to/file-or-dir

     exclude path/to/file-or-dir



SunOS 5.11                Last change:                        119






Mercurial Manual                                            HG(1)



     rename path/to/source path/to/destination

     Comment  lines  start with #. A specified path matches if it
     equals the full relative name of a file or one of its parent
     directories. The include or exclude directive with the long-
     est matching path applies, so line order does not matter.

     The include directive causes a file, or all  files  under  a
     directory, to be included in the destination repository, and
     the exclusion of all other files and directories not explic-
     itly  included. The exclude directive causes files or direc-
     tories to be omitted. The rename directive renames a file or
     directory  if it is converted. To rename from a subdirectory
     into the root of the repository, use . as the path to rename
     to.

     The  splicemap  is a file that allows insertion of synthetic
     history, letting you specify the parents of a revision. This
     is  useful  if  you want to e.g. give a Subversion merge two
     parents,  or  graft  two  disconnected  series  of   history
     together.  Each  entry  contains a key, followed by a space,
     followed by one or two comma-separated values:

     key parent1, parent2

     The key is the revision ID in the  source  revision  control
     system  whose  parents  should be modified (same format as a
     key in .hg/shamap). The values  are  the  revision  IDs  (in
     either  the  source  or destination revision control system)
     that should be used as the new parents for  that  node.  For
     example, if you have merged "release-1.0" into "trunk", then
     you should specify the revision on "trunk" as the first par-
     ent and the one on the "release-1.0" branch as the second.

     The  branchmap  is a file that allows you to rename a branch
     when it is being brought in from whatever  external  reposi-
     tory.  When  used in conjunction with a splicemap, it allows
     for a powerful combination to help fix even the  most  badly
     mismanaged repositories and turn them into nicely structured
     Mercurial repositories. The branchmap contains lines of  the
     form:

     original_branch_name new_branch_name

     where  "original_branch_name"  is  the name of the branch in
     the source repository, and "new_branch_name" is the name  of
     the  branch  is the destination repository. No whitespace is
     allowed in the branch  names.  This  can  be  used  to  (for
     instance)  move  code  in one repository from "default" to a
     named branch.





SunOS 5.11                Last change:                        120






Mercurial Manual                                            HG(1)



  Mercurial Source
     The Mercurial source recognizes the following  configuration
     options,  which  you can set on the command line with --con-
     fig:

     convert.hg.ignoreerrors
          ignore integrity errors when reading.  Use  it  to  fix
          Mercurial  repositories  with  missing revlogs, by con-
          verting from and to Mercurial. Default is False.

     convert.hg.saverev
          store original revision ID in changeset (forces  target
          IDs  to  change).  It  takes  a  boolean  argument  and
          defaults to False.

     convert.hg.revs
          revset specifying the source revisions to convert.

  CVS Source
     CVS source will use a sandbox (i.e. a checked-out copy) from
     CVS  to  indicate  the  starting  point of what will be con-
     verted. Direct access to the repository files is not needed,
     unless  of  course the repository is :local:. The conversion
     uses the top level directory in the sandbox to find the  CVS
     repository, and then uses CVS rlog commands to find files to
     convert. This means that unless  a  filemap  is  given,  all
     files  under  the  starting directory will be converted, and
     that any directory reorganization  in  the  CVS  sandbox  is
     ignored.

     The following options can be used with --config:

     convert.cvsps.cache
          Set to False to disable remote log caching, for testing
          and debugging purposes. Default is True.

     convert.cvsps.fuzz
          Specify the maximum time (in seconds) that  is  allowed
          between  commits with identical user and log message in
          a single changeset. When very large files were  checked
          in  as  part of a changeset then the default may not be
          long enough.  The default is 60.

     convert.cvsps.mergeto
          Specify a regular expression to which commit  log  mes-
          sages  are matched. If a match occurs, then the conver-
          sion process will insert a dummy revision  merging  the
          branch  on  which this log message occurs to the branch
          indicated in  the  regex.  Default  is  {{mergetobranch
          ([-\w]+)}}

     convert.cvsps.mergefrom



SunOS 5.11                Last change:                        121






Mercurial Manual                                            HG(1)



          Specify  a  regular expression to which commit log mes-
          sages are matched. If a match occurs, then the  conver-
          sion  process  will add the most recent revision on the
          branch indicated in the regex as the second  parent  of
          the changeset. Default is {{mergefrombranch ([-\w]+)}}

     convert.localtimezone
          use  local  time  (as  determined by the TZ environment
          variable) for  changeset  date/times.  The  default  is
          False (use UTC).

     hooks.cvslog
          Specify  a  Python  function to be called at the end of
          gathering the CVS log. The function is  passed  a  list
          with  the  log  entries,  and  can  modify  the entries
          in-place, or add or delete them.

     hooks.cvschangesets
          Specify a  Python  function  to  be  called  after  the
          changesets  are  calculated from the CVS log. The func-
          tion is passed a list with the changeset  entries,  and
          can  modify  the  changesets in-place, or add or delete
          them.

     An additional  "debugcvsps"  Mercurial  command  allows  the
     builtin  changeset  merging  code  to be run without doing a
     conversion. Its parameters and output are similar to that of
     cvsps 2.1. Please see the command help for more details.

  Subversion Source
     Subversion source detects classical trunk/branches/tags lay-
     outs.  By default, the supplied svn://repo/path/ source  URL
     is  converted  as  a single branch. If svn://repo/path/trunk
     exists    it    replaces    the    default    branch.     If
     svn://repo/path/branches   exists,  its  subdirectories  are
     listed as possible branches. If svn://repo/path/tags exists,
     it  is  looked  for  tags  referencing  converted  branches.
     Default trunk, branches and tags values  can  be  overridden
     with  following  options.  Set them to paths relative to the
     source URL, or leave them blank to disable auto detection.

     The following options can be set with --config:

     convert.svn.branches
          specify the directory containing branches.  The default
          is branches.

     convert.svn.tags
          specify  the  directory containing tags. The default is
          tags.

     convert.svn.trunk



SunOS 5.11                Last change:                        122






Mercurial Manual                                            HG(1)



          specify the name of the trunk branch.  The  default  is
          trunk.

     convert.localtimezone
          use  local  time  (as  determined by the TZ environment
          variable) for  changeset  date/times.  The  default  is
          False (use UTC).

     Source history can be retrieved starting at a specific revi-
     sion, instead of being  integrally  converted.  Only  single
     branch conversions are supported.

     convert.svn.startrev
          specify  start Subversion revision number.  The default
          is 0.

  Perforce Source
     The Perforce (P4) importer can be given a p4 depot path or a
     client specification as source. It will convert all files in
     the source to a flat Mercurial repository, ignoring  labels,
     branches  and  integrations.  Note that when a depot path is
     given you then usually should specify  a  target  directory,
     because otherwise the target may be named ...-hg.

     It  is  possible to limit the amount of source history to be
     converted by specifying an initial Perforce revision:

     convert.p4.startrev
          specify initial Perforce revision (a  Perforce  change-
          list number).

  Mercurial Destination
     The following options are supported:

     convert.hg.clonebranches
          dispatch   source  branches  in  separate  clones.  The
          default is False.

     convert.hg.tagsbranch
          branch name for tag revisions, defaults to default.

     convert.hg.usebranchnames
          preserve branch names. The default is True.

     Options:

     --authors
          username mapping filename (DEPRECATED, use  --authormap
          instead)

     -s, --source-type
          source repository type



SunOS 5.11                Last change:                        123






Mercurial Manual                                            HG(1)



     -d, --dest-type
          destination repository type

     -r, --rev
          import up to source revision REV

     -A, --authormap
          remap usernames using this file

     --filemap
          remap file names using contents of file

     --splicemap
          splice synthesized history into place

     --branchmap
          change branch names while converting

     --branchsort
          try to sort changesets by branches

     --datesort
          try to sort changesets by date

     --sourcesort
          preserve source changesets order

     --closesort
          try to reorder closed revisions

  eol
     automatically manage newlines in repository files

     This extension allows you to manage the type of line endings
     (CRLF or LF) that are used in  the  repository  and  in  the
     local working directory. That way you can get CRLF line end-
     ings on Windows and LF on Unix/Mac, thereby  letting  every-
     body use their OS native line endings.

     The  extension  reads  its  configuration  from  a versioned
     .hgeol configuration file found in the root of  the  working
     copy.  The .hgeol file use the same syntax as all other Mer-
     curial configuration files. It uses two sections, [patterns]
     and [repository].

     The  [patterns] section specifies how line endings should be
     converted between the working copy and the  repository.  The
     format  is  specified  by a file pattern. The first match is
     used, so put more specific  patterns  first.  The  available
     line endings are LF, CRLF, and BIN.

     Files  with  the  declared  format  of CRLF or LF are always



SunOS 5.11                Last change:                        124






Mercurial Manual                                            HG(1)



     checked out and stored in the repository in that format  and
     files  declared to be binary (BIN) are left unchanged. Addi-
     tionally, native is an alias for checking out in  the  plat-
     form's  default line ending: LF on Unix (including Mac OS X)
     and CRLF on Windows. Note that BIN (do nothing to line  end-
     ings) is Mercurial's default behaviour; it is only needed if
     you need to override a later, more general pattern.

     The optional [repository] section specifies the line endings
     to  use  for files stored in the repository. It has a single
     setting, native, which determines the storage  line  endings
     for  files  declared as native in the [patterns] section. It
     can be set to LF or CRLF. The default is  LF.  For  example,
     this means that on Windows, files configured as native (CRLF
     by default) will be converted  to  LF  when  stored  in  the
     repository.  Files declared as LF, CRLF, or BIN in the [pat-
     terns] section are always stored as-is in the repository.

     Example versioned .hgeol file:

     [patterns]
     **.py = native
     **.vcproj = CRLF
     **.txt = native
     Makefile = LF
     **.jpg = BIN

     [repository]
     native = LF

     Note The rules will first apply when files  are  touched  in
          the  working copy, e.g. by updating to null and back to
          tip to touch all files.

     The extension uses an optional [eol] section read from  both
     the  normal  Mercurial  configuration  files  and the .hgeol
     file, with the latter overriding the  former.  You  can  use
     that  section  to  control  the  overall behavior. There are
     three settings:

     o eol.native (default os.linesep) can be set to LF  or  CRLF
       to  override  the  default  interpretation  of  native for
       checkout. This can be used with hg archive on  Unix,  say,
       to  generate  an archive where files have line endings for
       Windows.

     o eol.only-consistent (default True) can be set to False  to
       make  the  extension convert files with inconsistent EOLs.
       Inconsistent means that there is both CRLF and LF  present
       in  the  file.   Such files are normally not touched under
       the assumption that they have mixed EOLs on purpose.




SunOS 5.11                Last change:                        125






Mercurial Manual                                            HG(1)



     o eol.fix-trailing-newline (default False)  can  be  set  to
       True to ensure that converted files end with a EOL charac-
       ter (either \n or \r\n as per the configured patterns).

     The extension provides cleverencode: and cleverdecode:  fil-
     ters  like  the  deprecated  win32text  extension does. This
     means that you can disable win32text and enable eol and your
     filters  will  still  work.  You  only need to these filters
     until you have prepared a .hgeol file.

     The win32text.forbid* hooks provided by the win32text exten-
     sion  have  been unified into a single hook named eol.check-
     headshook. The hook will lookup the  expected  line  endings
     from  the  .hgeol  file,  which  means you must migrate to a
     .hgeol file first before using the hook.  eol.checkheadshook
     only  checks  heads,  intermediate invalid revisions will be
     pushed. To forbid them completely, use the  eol.checkallhook
     hook.  These hooks are best used as pretxnchangegroup hooks.

     See hg help patterns for more  information  about  the  glob
     patterns used.

  extdiff
     command to allow external programs to compare revisions

     The  extdiff  Mercurial extension allows you to use external
     programs to compare  revisions,  or  revision  with  working
     directory. The external diff programs are called with a con-
     figurable set of options and two non-option arguments: paths
     to directories containing snapshots of files to compare.

     The  extdiff extension also allows you to configure new diff
     commands, so you do not need to type hg  extdiff  -p  kdiff3
     always.

     [extdiff]
     # add new command that runs GNU diff(1) in 'context diff' mode
     cdiff = gdiff -Nprc5
     ## or the old way:
     #cmd.cdiff = gdiff
     #opts.cdiff = -Nprc5

     # add new command called vdiff, runs kdiff3
     vdiff = kdiff3

     # add new command called meld, runs meld (no need to name twice)
     meld =

     # add new command called vimdiff, runs gvimdiff with DirDiff plugin
     # (see http://www.vim.org/scripts/script.php?script_id=102) Non
     # English user, be sure to put "let g:DirDiffDynamicDiffText = 1" in
     # your .vimrc



SunOS 5.11                Last change:                        126






Mercurial Manual                                            HG(1)



     vimdiff = gvim -f "+next" \
               "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"

     Tool  arguments  can  include variables that are expanded at
     runtime:

     $parent1, $plabel1 - filename, descriptive label of first parent
     $child,   $clabel  - filename, descriptive label of child revision
     $parent2, $plabel2 - filename, descriptive label of second parent
     $root              - repository root
     $parent is an alias for $parent1.

     The extdiff extension will look  in  your  [diff-tools]  and
     [merge-tools]  sections  for  diff tool arguments, when none
     are specified in [extdiff].

     [extdiff]
     kdiff3 =

     [diff-tools]
     kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child

     You can use -I/-X and list of file or directory  names  like
     normal  hg  diff  command. The extdiff extension makes snap-
     shots of only needed files, so  running  the  external  diff
     program  will  actually be pretty fast (at least faster than
     having to compare the entire tree).

  Commands
  extdiff
     hg extdiff [OPT]... [FILE]...

     Show differences between revisions for the specified  files,
     using an external program. The default program used is diff,
     with default options "-Npru".

     To select a different program, use the -p/--program  option.
     The  program  will be passed the names of two directories to
     compare. To pass additional  options  to  the  program,  use
     -o/--option.  These  will  be passed before the names of the
     directories to compare.

     When two revision arguments  are  given,  then  changes  are
     shown between those revisions. If only one revision is spec-
     ified then that revision is compared to the  working  direc-
     tory,  and,  when  no  revisions  are specified, the working
     directory files are compared to its parent.

     Options:

     -p, --program
          comparison program to run



SunOS 5.11                Last change:                        127






Mercurial Manual                                            HG(1)



     -o, --option
          pass option to comparison program

     -r, --rev
          revision

     -c, --change
          change made by revision

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  factotum
     http authentication with factotum

     This extension allows the factotum(4)  facility  on  Plan  9
     from  Bell Labs platforms to provide authentication informa-
     tion for HTTP access. Configuration entries specified in the
     auth  section as well as authentication information provided
     in the repository URL are fully supported. If no  prefix  is
     specified, a value of "*" will be assumed.

     By default, keys are specified as:

     proto=pass service=hg prefix=<prefix> user=<username> !password=<password>

     If  the  factotum  extension  is unable to read the required
     key, one will be requested interactively.

     A configuration section is available  to  customize  runtime
     behavior. By default, these entries are:

     [factotum]
     executable = /bin/auth/factotum
     mountpoint = /mnt/factotum
     service = hg

     The  executable  entry defines the full path to the factotum
     binary. The mountpoint entry defines the path to the  facto-
     tum  file  service.  Lastly,  the service entry controls the
     service name used when reading keys.

  fetch
     pull, update and merge in one command (DEPRECATED)

  Commands
  fetch
     hg fetch [SOURCE]




SunOS 5.11                Last change:                        128






Mercurial Manual                                            HG(1)



     This finds all changes from the repository at the  specified
     path or URL and adds them to the local repository.

     If  the  pulled  changes  add a new branch head, the head is
     automatically merged, and the result of the merge is commit-
     ted.  Otherwise, the working directory is updated to include
     the new changes.

     When a merge is  needed,  the  working  directory  is  first
     updated  to the newly pulled changes. Local changes are then
     merged into the pulled changes. To switch the  merge  order,
     use --switch-parent.

     See hg help dates for a list of formats valid for -d/--date.

     Returns 0 on success.

     Options:

     -r, --rev
          a specific revision you would like to pull

     -e, --edit
          edit commit message

     --force-editor
          edit commit message (DEPRECATED)

     --switch-parent
          switch parents when merging

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)



SunOS 5.11                Last change:                        129






Mercurial Manual                                            HG(1)



  gpg
     commands to sign and verify changesets

  Commands
  sigcheck
     hg sigcheck REV

     verify  all  the  signatures  there  may be for a particular
     revision

  sign
     hg sign [OPTION]... [REV]...

     If no revision is given, the parent of the working directory
     is used, or tip if no revision is checked out.

     See hg help dates for a list of formats valid for -d/--date.

     Options:

     -l, --local
          make the signature local

     -f, --force
          sign even if the sigfile is modified

     --no-commit
          do not commit the sigfile after signing

     -k, --key
          the key id to sign with

     -m, --message
          commit message

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

  sigs
     hg sigs

     list signed changesets

  graphlog
     command to view revision graphs from a shell

     This extension adds a --graph option to the incoming, outgo-
     ing  and  log commands. When this options is given, an ASCII
     representation of the revision graph is also shown.



SunOS 5.11                Last change:                        130






Mercurial Manual                                            HG(1)



  Commands
  glog
     hg glog [OPTION]... [FILE]

     Print a revision history alongside a  revision  graph  drawn
     with ASCII characters.

     Nodes  printed  as an @ character are parents of the working
     directory.

     Options:

     -f, --follow
          follow changeset history, or file history across copies
          and renames

     --follow-first
          only  follow the first parent of merge changesets (DEP-
          RECATED)

     -d, --date
          show revisions matching date spec

     -C, --copies
          show copied files

     -k, --keyword
          do case-insensitive search for a given text

     -r, --rev
          show the specified revision or range

     --removed
          include revisions where files were removed

     -m, --only-merges
          show only merges (DEPRECATED)

     -u, --user
          revisions committed by user

     --only-branch
          show only changesets  within  the  given  named  branch
          (DEPRECATED)

     -b, --branch
          show changesets within the given named branch

     -P, --prune
          do not display revision or any of its ancestors

     -p, --patch



SunOS 5.11                Last change:                        131






Mercurial Manual                                            HG(1)



          show patch

     -g, --git
          use git extended diff format

     -l, --limit
          limit number of changes displayed

     -M, --no-merges
          do not show merges

     --stat
          output diffstat-style summary of changes

     -G, --graph
          show the revision DAG

     --style
          display using template map file

     --template
          display with template

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  hgcia
     hooks for integrating with the CIA.vc notification service

     This  is  meant to be run as a changegroup or incoming hook.
     To configure it, set the following options in your hgrc:

     [cia]
     # your registered CIA user name
     user = foo
     # the name of the project in CIA
     project = foo
     # the module (subproject) (optional)
     #module = foo
     # Append a diffstat to the log message (optional)
     #diffstat = False
     # Template to use for log messages (optional)
     #template = {desc}\n{baseurl}{webroot}/rev/{node}-- {diffstat}
     # Style to use (optional)
     #style = foo
     # The URL of the CIA notification service (optional)
     # You can use mailto: URLs to send by email, e.g.
     # mailto:cia@cia.vc
     # Make sure to set email.from if you do this.



SunOS 5.11                Last change:                        132






Mercurial Manual                                            HG(1)



     #url = http://cia.vc/
     # print message instead of sending it (optional)
     #test = False
     # number of slashes to strip for url paths
     #strip = 0

     [hooks]
     # one of these:
     changegroup.cia = python:hgcia.hook
     #incoming.cia = python:hgcia.hook

     [web]
     # If you want hyperlinks (optional)
     baseurl = http://server/path/to/repo

  hgk
     browse the repository in a graphical way

     The hgk extension allows browsing the history of  a  reposi-
     tory  in  a graphical way. It requires Tcl/Tk version 8.4 or
     later. (Tcl/Tk is not distributed with Mercurial.)

     hgk consists of two parts: a Tcl script that does  the  dis-
     playing  and  querying  of  information, and an extension to
     Mercurial named hgk.py, which provides hooks for hgk to  get
     information.

     The  hg  view  command  will  launch the hgk Tcl script. The
     script is shipped in /usr/demo/mercurial, and hgk  needs  no
     configuration  to  find  it.  You can specify the path to an
     alternate hgk in your configuration file:

     [hgk]
     path=/location/of/hgk

     hgk can make use of the extdiff extension to visualize revi-
     sions.   Assuming  you  had already configured extdiff vdiff
     command, just add:

     [hgk]
     vdiff=vdiff

     Revisions context menu will now display  additional  entries
     to fire vdiff on hovered and selected revisions.

  Commands
  view
     hg view [-l LIMIT] [REVRANGE]

     start interactive history viewer

     Options:



SunOS 5.11                Last change:                        133






Mercurial Manual                                            HG(1)



     -l, --limit
          limit number of changes displayed

  highlight
     syntax highlighting for hgweb (requires Pygments)

     It  depends  on  the  Pygments  syntax highlighting library:
     http://pygments.org/

     There is a single configuration option:

     [web]
     pygments_style = <style>

     The default is 'colorful'.

  histedit
     interactive history editing

     With this extension installed, Mercurial gains one new  com-
     mand:  histedit. Usage is as follows, assuming the following
     history:

     @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42
     |    Add delta
     |
     o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42
     |    Add gamma
     |
     o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42
     |    Add beta
     |
     o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
          Add alpha

     If you were to run hg histedit c561b4e977df, you  would  see
     the following file open in your editor:

     pick c561b4e977df Add beta
     pick 030b686bedc4 Add gamma
     pick 7c2fd3b9020c Add delta

     # Edit history between c561b4e977df and 7c2fd3b9020c
     #
     # Commands:
     #  p, pick = use commit
     #  e, edit = use commit, but stop for amending
     #  f, fold = use commit, but fold into previous commit (combines N and N-1)
     #  d, drop = remove commit from history
     #  m, mess = edit message without changing commit content
     #




SunOS 5.11                Last change:                        134






Mercurial Manual                                            HG(1)



     In  this  file, lines beginning with # are ignored. You must
     specify a rule for each revision in your history. For  exam-
     ple,  if  you  had  meant to add gamma before beta, and then
     wanted to add delta in the same revision as beta, you  would
     reorganize the file to look like this:

     pick 030b686bedc4 Add gamma
     pick c561b4e977df Add beta
     fold 7c2fd3b9020c Add delta

     # Edit history between c561b4e977df and 7c2fd3b9020c
     #
     # Commands:
     #  p, pick = use commit
     #  e, edit = use commit, but stop for amending
     #  f, fold = use commit, but fold into previous commit (combines N and N-1)
     #  d, drop = remove commit from history
     #  m, mess = edit message without changing commit content
     #

     At  which  point  you  close  the editor and histedit starts
     working. When you specify a fold  operation,  histedit  will
     open  an  editor  when  it  folds  those revisions together,
     offering you a chance to clean up the commit message:

     Add beta
     ***
     Add delta

     Edit the commit message to your liking, then close the  edi-
     tor.  For this example, let's assume that the commit message
     was changed to Add beta and delta. After  histedit  has  run
     and had a chance to remove any old or temporary revisions it
     needed, the history looks like this:

     @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42
     |    Add beta and delta.
     |
     o  1   081603921c3f   2009-04-27 18:04 -0500   durin42
     |    Add gamma
     |
     o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
          Add alpha

     Note that histedit does not remove any revisions  (even  its
     own  temporary  ones)  until  after it has completed all the
     editing operations, so  it  will  probably  perform  several
     strip  operations  when it's done. For the above example, it
     had to run strip twice. Strip can be  slow  depending  on  a
     variety  of  factors,  so  you  might  need  to  be a little
     patient. You can choose to keep the  original  revisions  by
     passing the --keep flag.



SunOS 5.11                Last change:                        135






Mercurial Manual                                            HG(1)



     The  edit  operation will drop you back to a command prompt,
     allowing you to edit files freely, or even use hg record  to
     commit  some changes as a separate commit. When you're done,
     any remaining uncommitted changes will be committed as well.
     When  done,  run hg histedit --continue to finish this step.
     You'll be prompted for a new commit message, but the default
     commit  message will be the original message for the edit ed
     revision.

     The message operation will give you a  chance  to  revise  a
     commit  message without changing the contents. It's a short-
     cut for doing  edit  immediately  followed  by  hg  histedit
     --continue`.

     If  histedit  encounters  a  conflict when moving a revision
     (while handling pick or fold), it'll stop in a similar  man-
     ner to edit with the difference that it won't prompt you for
     a commit message when done. If you decide at this point that
     you  don't  like  how much work it will be to rearrange his-
     tory, or that you made a mistake, you can  use  hg  histedit
     --abort  to abandon the new changes you have made and return
     to the state before you attempted to edit your history.

     If we clone the histedit-ed example repository above and add
     four more changes, such that we have the following history:

     @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan
     |    Add theta
     |
     o  5   140988835471   2009-04-27 18:04 -0500   stefan
     |    Add eta
     |
     o  4   122930637314   2009-04-27 18:04 -0500   stefan
     |    Add zeta
     |
     o  3   836302820282   2009-04-27 18:04 -0500   stefan
     |    Add epsilon
     |
     o  2   989b4d060121   2009-04-27 18:04 -0500   durin42
     |    Add beta and delta.
     |
     o  1   081603921c3f   2009-04-27 18:04 -0500   durin42
     |    Add gamma
     |
     o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42
          Add alpha

     If  you  run  hg histedit --outgoing on the clone then it is
     the same as running hg histedit 836302820282.  If  you  need
     plan  to push to a repository that Mercurial does not detect
     to be related to the source repo,  you  can  add  a  --force
     option.



SunOS 5.11                Last change:                        136






Mercurial Manual                                            HG(1)



  Commands
  histedit
     hg histedit ANCESTOR | --outgoing [URL]

     This  command edits changesets between ANCESTOR and the par-
     ent of the working directory.

     With --outgoing, this edits changesets not found in the des-
     tination  repository.  If URL of the destination is omitted,
     the 'default-push' (or 'default') path will be used.

     For safety, this command  is  aborted,  also  if  there  are
     ambiguous  outgoing  revisions  which may confuse users: for
     example, there are  multiple  branches  containing  outgoing
     revisions.

     Use  "min(outgoing()  and ::.)" or similar revset specifica-
     tion instead of --outgoing to specify edit  target  revision
     exactly in such ambiguous situation. See hg help revsets for
     detail about selecting revisions.

     Returns 0 on success, 1 if  user  intervention  is  required
     (not  only  for  intentional  "edit"  command,  but also for
     resolving unexpected conflicts).

     Options:

     --commands
          Read history edits from the specified file.

     -c, --continue
          continue an edit already in progress

     -k, --keep
          don't strip old nodes after edit is complete

     --abort
          abort an edit in progress

     -o, --outgoing
          changesets not found in destination

     -f, --force
          force outgoing even for unrelated repositories

     -r, --rev
          first revision to be edited

  inotify
     accelerate status report using Linux's inotify service





SunOS 5.11                Last change:                        137






Mercurial Manual                                            HG(1)



  Commands
  inserve
     hg inserve [OPTION]...

     start an inotify server for this repository

     Options:

     -d, --daemon
          run server in background

     --daemon-pipefds
          used internally by daemon mode

     -t, --idle-timeout
          minutes to sit idle before exiting

     --pid-file
          name of file to write process ID to

  interhg
     None

  keyword
     expand keywords in tracked files

     This extension expands RCS/CVS-like or self-customized $Key-
     words$ in tracked text files selected by your configuration.

     Keywords are only expanded in  local  repositories  and  not
     stored  in the change history. The mechanism can be regarded
     as a convenience for the current user or for archive distri-
     bution.

     Keywords expand to the changeset data pertaining to the lat-
     est change relative to the working directory parent of  each
     file.

     Configuration  is  done  in  the [keyword], [keywordset] and
     [keywordmaps] sections of hgrc files.

     Example:

     [keyword]
     # expand keywords in every python file except those matching "x*"
     **.py =
     x*    = ignore

     [keywordset]
     # prefer svn- over cvs-like default keywordmaps
     svn = True




SunOS 5.11                Last change:                        138






Mercurial Manual                                            HG(1)



     Note The more specific you are in your filename patterns the
          less you lose speed in huge repositories.

     For  [keywordmaps] template mapping and expansion demonstra-
     tion and control run hg kwdemo. See hg help templates for  a
     list of available templates and filters.

     Three additional date template filters are provided:

     utcdate

          "2006/09/18 15:13:13"

     svnutcdate

          "2006-09-18 15:13:13Z"

     svnisodate

          "2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)"

     The  default  template mappings (view with hg kwdemo -d) can
     be replaced with customized keywords and  templates.  Again,
     run  hg  kwdemo to control the results of your configuration
     changes.

     Before changing/disabling active keywords, you must  run  hg
     kwshrink  to  avoid  storing expanded keywords in the change
     history.

     To force expansion after enabling  it,  or  a  configuration
     change, run hg kwexpand.

     Expansions  spanning  more  than  one  line  and incremental
     expansions, like CVS' $Log$, are not  supported.  A  keyword
     template map "Log = {desc}" expands to the first line of the
     changeset description.

  Commands
  kwdemo
     hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...

     Show current, custom, or default keyword template  maps  and
     their expansions.

     Extend the current configuration by specifying maps as argu-
     ments and using -f/--rcfile to source an external hgrc file.

     Use -d/--default to disable current configuration.

     See  hg help templates for information on templates and fil-
     ters.



SunOS 5.11                Last change:                        139






Mercurial Manual                                            HG(1)



     Options:

     -d, --default
          show default keyword template maps

     -f, --rcfile
          read maps from rcfile

  kwexpand
     hg kwexpand [OPTION]... [FILE]...

     Run after (re)enabling keyword expansion.

     kwexpand  refuses  to  run  if  given  files  contain  local
     changes.

     Options:

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  kwfiles
     hg kwfiles [OPTION]... [FILE]...

     List which files in the working directory are matched by the
     [keyword] configuration patterns.

     Useful to prevent inadvertent keyword expansion and to speed
     up  execution by including only files that are actual candi-
     dates for expansion.

     See hg help keyword on how to construct  patterns  both  for
     inclusion and exclusion of files.

     With  -A/--all  and  -v/--verbose the codes used to show the
     status of files are:

     K = keyword expansion candidate
     k = keyword expansion candidate (not tracked)
     I = ignored
     i = ignored (not tracked)

     Options:

     -A, --all
          show keyword status flags of all files

     -i, --ignore
          show files excluded from expansion



SunOS 5.11                Last change:                        140






Mercurial Manual                                            HG(1)



     -u, --unknown
          only show unknown (not tracked) files

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  kwshrink
     hg kwshrink [OPTION]... [FILE]...

     Must be run before changing/disabling active keywords.

     kwshrink  refuses  to  run  if  given  files  contain  local
     changes.

     Options:

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  largefiles
     track large binary files

     Large  binary  files  tend  to be not very compressible, not
     very diffable, and not at all mergeable. Such files are  not
     handled  efficiently by Mercurial's storage format (revlog),
     which is based on compressed binary  deltas;  storing  large
     binary files as regular Mercurial files wastes bandwidth and
     disk space  and  increases  Mercurial's  memory  usage.  The
     largefiles  extension  addresses  these problems by adding a
     centralized client-server layer on top of Mercurial:  large-
     files  live in a central store out on the network somewhere,
     and you only fetch the revisions that you need when you need
     them.

     largefiles  works  by maintaining a "standin file" in .hglf/
     for each largefile. The standins are  small  (41  bytes:  an
     SHA-1  hash  plus  newline)  and  are  tracked by Mercurial.
     Largefile revisions are identified  by  the  SHA-1  hash  of
     their  contents, which is written to the standin. largefiles
     uses that revision ID to get/put largefile revisions from/to
     the central store. This saves both disk space and bandwidth,
     since you don't need to retrieve all historical revisions of
     large files when you clone or pull.

     To  start  a  new  repository or add new large binary files,
     just add --large to your hg add command. For example:



SunOS 5.11                Last change:                        141






Mercurial Manual                                            HG(1)



     $ dd if=/dev/urandom of=randomdata count=2000
     $ hg add --large randomdata
     $ hg commit -m 'add randomdata as a largefile'

     When you push a changeset that adds/modifies largefiles to a
     remote  repository, its largefile revisions will be uploaded
     along with it.  Note that the  remote  Mercurial  must  also
     have the largefiles extension enabled for this to work.

     When  you  pull  a  changeset that affects largefiles from a
     remote repository, the largefiles for the changeset will  by
     default not be pulled down. However, when you update to such
     a revision, any largefiles needed by that revision are down-
     loaded  and  cached  (if  they  have  never  been downloaded
     before). One way to pull largefiles when pulling is thus  to
     use  --update,  which  will  update your working copy to the
     latest pulled revision  (and  thereby  downloading  any  new
     largefiles).

     If  you  want  to  pull largefiles you don't need for update
     yet, then you can use pull with the --lfrev option or the hg
     lfpull command.

     If  you know you are pulling from a non-default location and
     want to download all the largefiles that correspond  to  the
     new  changesets  at  the  same  time, then you can pull with
     --lfrev "pulled()".

     If you just want to ensure that you will have the largefiles
     needed  to  merge  or  rebase  with  new  heads that you are
     pulling, then you can  pull  with  --lfrev  "head(pulled())"
     flag  to  pre-emptively download any largefiles that are new
     in the heads you are pulling.

     Keep in mind that network access  may  now  be  required  to
     update  to  changesets  that you have not previously updated
     to. The nature of the largefiles extension means that updat-
     ing is no longer guaranteed to be a local-only operation.

     If you already have large files tracked by Mercurial without
     the largefiles extension, you  will  need  to  convert  your
     repository in order to benefit from largefiles. This is done
     with the hg lfconvert command:

     $ hg lfconvert --size 10 oldrepo newrepo

     In repositories that already have largefiles  in  them,  any
     new  file  over 10MB will automatically be added as a large-
     file. To change this threshold,  set  largefiles.minsize  in
     your  Mercurial config file to the minimum size in megabytes
     to track as a largefile, or use the --lfsize option  to  the
     add command (also in megabytes):



SunOS 5.11                Last change:                        142






Mercurial Manual                                            HG(1)



     [largefiles]
     minsize = 2

     $ hg add --lfsize 2

     The  largefiles.patterns config option allows you to specify
     a list of filename patterns  (see  hg  help  patterns)  that
     should always be tracked as largefiles:

     [largefiles]
     patterns =
       *.jpg
       re:.*\.(png|bmp)$
       library.zip
       content/audio/*

     Files  that  match  one  of  these patterns will be added as
     largefiles regardless of their size.

     The  largefiles.minsize   and   largefiles.patterns   config
     options  will  be  ignored  for any repositories not already
     containing a largefile. To add  the  first  largefile  to  a
     repository,  you must explicitly do so with the --large flag
     passed to the hg add command.

  Commands
  lfconvert
     hg lfconvert SOURCE DEST [FILE ...]

     Convert repository SOURCE to a new repository DEST,  identi-
     cal to SOURCE except that certain files will be converted as
     largefiles: specifically, any file that matches any  PATTERN
     or  whose  size  is above the minimum size threshold is con-
     verted as a largefile. The size used to determine whether or
     not  to track a file as a largefile is the size of the first
     version of the file.  The  minimum  size  can  be  specified
     either with --size or in configuration as largefiles.size.

     After  running  this command you will need to make sure that
     largefiles is enabled anywhere you intend to  push  the  new
     repository.

     Use  --to-normal to convert largefiles back to normal files;
     after this, the DEST repository can be used  without  large-
     files at all.

     Options:

     -s, --size
          minimum  size  (MB) for files to be converted as large-
          files




SunOS 5.11                Last change:                        143






Mercurial Manual                                            HG(1)



     --to-normal
          convert from a largefiles repo to a normal repo

  lfpull
     hg lfpull -r REV... [-e CMD] [--remotecmd CMD] [SOURCE]

     Pull largefiles that are referenced  from  local  changesets
     but missing locally, pulling from a remote repository to the
     local cache.

     If SOURCE is omitted, the 'default' path will be used.   See
     hg help urls for more information.

     Some examples:

     o pull largefiles for all branch heads:

       hg lfpull -r "head() and not closed()"

     o pull largefiles on the default branch:

       hg lfpull -r "branch(default)"

     Options:

     -r, --rev
          pull largefiles for these revisions

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do  not verify server certificate (ignoring web.cacerts
          config)

  mq
     manage a stack of patches

     This extension lets you work with a stack of  patches  in  a
     Mercurial repository. It manages two stacks of patches - all
     known  patches,  and  applied  patches  (subset   of   known
     patches).

     Known   patches  are  represented  as  patch  files  in  the
     .hg/patches directory. Applied patches are both patch  files
     and changesets.

     Common tasks (use hg help command for more details):




SunOS 5.11                Last change:                        144






Mercurial Manual                                            HG(1)



     create new patch                          qnew
     import existing patch                     qimport

     print patch series                        qseries
     print applied patches                     qapplied

     add known patch to applied stack          qpush
     remove patch from applied stack           qpop
     refresh contents of top applied patch     qrefresh

     By  default,  mq  will  automatically  use  git patches when
     required to avoid losing file mode  changes,  copy  records,
     binary files or empty files creations or deletions. This be-
     haviour can be configured with:

     [mq]
     git = auto/keep/yes/no

     If set to 'keep', mq will obey the [diff] section configura-
     tion while preserving existing git patches upon qrefresh. If
     set to 'yes' or 'no', mq will override  the  [diff]  section
     and  always generate git or regular patches, possibly losing
     data in the second case.

     It may be desirable for mq changesets  to  be  kept  in  the
     secret phase (see hg help phases), which can be enabled with
     the following setting:

     [mq]
     secret = True

     You  will  by  default  be  managing  a  patch  queue  named
     "patches".  You  can  create other, independent patch queues
     with the hg qqueue command.

     If the working directory contains uncommitted files,  qpush,
     qpop and qgoto abort immediately. If -f/--force is used, the
     changes are discarded. Setting:

     [mq]
     keepchanges = True

     make them behave  as  if  --keep-changes  were  passed,  and
     non-conflicting  local  changes  will  be tolerated and pre-
     served.  If  incompatible  options  such  as  -f/--force  or
     --exact are passed, this setting is ignored.

     This extension used to provide a strip command. This command
     now lives in the strip extension.

  Commands




SunOS 5.11                Last change:                        145






Mercurial Manual                                            HG(1)



  qapplied
     hg qapplied [-1] [-s] [PATCH]

     Returns 0 on success.

     Options:

     -1, --last
          show only the preceding applied patch

     -s, --summary
          print first line of patch header

  qclone
     hg qclone [OPTION]... SOURCE [DEST]

     If  source  is  local,  destination  will  have  no  patches
     applied.  If source is remote, this command can not check if
     patches are applied in  source,  so  cannot  guarantee  that
     patches  are not applied in destination. If you clone remote
     repository, be sure before that it has no patches applied.

     Source patch repository is looked for  in  <src>/.hg/patches
     by default. Use -p <url> to change.

     The  patch  directory must be a nested Mercurial repository,
     as would be created by hg init --mq.

     Return 0 on success.

     Options:

     --pull
          use pull protocol to copy metadata

     -U, --noupdate
          do not update the new working directories

     --uncompressed
          use uncompressed transfer (fast over LAN)

     -p, --patches
          location of source patch repository

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts



SunOS 5.11                Last change:                        146






Mercurial Manual                                            HG(1)



          config)

  qcommit
     hg qcommit [OPTION]... [FILE]...

     This command is deprecated; use hg commit --mq instead.

     Options:

     -A, --addremove
          mark  new/missing files as added/removed before commit-
          ting

     --close-branch
          mark a branch as closed, hiding it from the branch list

     --amend
          amend the parent of the working dir

     -s, --secret
          use the secret phase for committing

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

     -S, --subrepos
          recurse into subrepositories

          aliases: qci

  qdelete
     hg qdelete [-k] [PATCH]...

     The  patches  must not be applied, and at least one patch is
     required.  Exact  patch  identifiers  must  be  given.  With
     -k/--keep, the patch files are preserved in the patch direc-
     tory.



SunOS 5.11                Last change:                        147






Mercurial Manual                                            HG(1)



     To stop managing a patch and move it into permanent history,
     use the hg qfinish command.

     Options:

     -k, --keep
          keep patch file

     -r, --rev
          stop managing a revision (DEPRECATED)

          aliases: qremove qrm

  qdiff
     hg qdiff [OPTION]... [FILE]...

     Shows a diff which includes the current patch as well as any
     changes which have been made in the working directory  since
     the  last refresh (thus showing what the current patch would
     become after a qrefresh).

     Use hg diff if you only want to see the changes  made  since
     the  last  qrefresh,  or  hg  export qtip if you want to see
     changes made by the current patch without including  changes
     made since the qrefresh.

     Returns 0 on success.

     Options:

     -a, --text
          treat all files as text

     -g, --git
          use git extended diff format

     --nodates
          omit dates from diff headers

     -p, --show-function
          show which function each change is in

     --reverse
          produce a diff that undoes the changes

     -w, --ignore-all-space
          ignore white space when comparing lines

     -b, --ignore-space-change
          ignore changes in the amount of white space

     -B, --ignore-blank-lines



SunOS 5.11                Last change:                        148






Mercurial Manual                                            HG(1)



          ignore changes whose lines are all blank

     -U, --unified
          number of lines of context to show

     --stat
          output diffstat-style summary of changes

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

  qfinish
     hg qfinish [-a] [REV]...

     Finishes  the  specified revisions (corresponding to applied
     patches) by moving them  out  of  mq  control  into  regular
     repository history.

     Accepts  a  revision  range  or  the -a/--applied option. If
     --applied is specified, all applied mq revisions are removed
     from  mq  control. Otherwise, the given revisions must be at
     the base of the stack of applied patches.

     This can be especially useful  if  your  changes  have  been
     applied  to  an  upstream repository, or if you are about to
     push your changes to upstream.

     Returns 0 on success.

     Options:

     -a, --applied
          finish all applied changesets

  qfold
     hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH...

     Patches must not yet be applied. Each patch will be  succes-
     sively  applied  to the current patch in the order given. If
     all the patches apply successfully, the current  patch  will
     be  refreshed  with the new cumulative patch, and the folded
     patches will be deleted. With -k/--keep,  the  folded  patch
     files will not be removed afterwards.

     The  header  for each folded patch will be concatenated with
     the current patch header, separated by a line of * * *.

     Returns 0 on success.




SunOS 5.11                Last change:                        149






Mercurial Manual                                            HG(1)



     Options:

     -e, --edit
          edit patch header

     -k, --keep
          keep folded patch files

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

  qgoto
     hg qgoto [OPTION]... PATCH

     Returns 0 on success.

     Options:

     --keep-changes
          tolerate non-conflicting local changes

     -f, --force
          overwrite any local changes

     --no-backup
          do not save backup copies of files

  qguard
     hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]

     Guards control whether a patch can be pushed. A  patch  with
     no  guards  is  always pushed. A patch with a positive guard
     ("+foo") is pushed only if the hg qselect command has  acti-
     vated  it.  A  patch with a negative guard ("-foo") is never
     pushed if the hg qselect command has activated it.

     With no arguments, print the currently active guards.   With
     arguments, set guards for the named patch.

     Note Specifying negative guards now requires '--'.

     To set guards on another patch:

     hg qguard other.patch -- +2.6.17 -stable

     Returns 0 on success.

     Options:




SunOS 5.11                Last change:                        150






Mercurial Manual                                            HG(1)



     -l, --list
          list all patches and guards

     -n, --none
          drop all guards

  qheader
     hg qheader [PATCH]

     Returns 0 on success.

  qimport
     hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]...

     The patch is inserted into the series after the last applied
     patch. If no patches have been applied, qimport prepends the
     patch to the series.

     The  patch will have the same name as its source file unless
     you give it a new one with -n/--name.

     You can register an existing patch inside the  patch  direc-
     tory with the -e/--existing flag.

     With  -f/--force, an existing patch of the same name will be
     overwritten.

     An existing changeset may be placed under  mq  control  with
     -r/--rev  (e.g. qimport --rev . -n patch will place the cur-
     rent revision under  mq  control).  With  -g/--git,  patches
     imported  with  --rev  will use the git diff format. See the
     diffs help topic for information on why  this  is  important
     for   preserving   rename/copy  information  and  permission
     changes. Use hg qfinish to remove changesets  from  mq  con-
     trol.

     To  import  a patch from standard input, pass - as the patch
     file.  When importing from standard input, a patch name must
     be specified using the --name flag.

     To import an existing patch while renaming it:

     hg qimport -e existing-patch -n new-name

     Returns 0 if import succeeded.

     Options:

     -e, --existing
          import file in patch directory

     -n, --name



SunOS 5.11                Last change:                        151






Mercurial Manual                                            HG(1)



          name of patch file

     -f, --force
          overwrite existing files

     -r, --rev
          place existing revisions under mq control

     -g, --git
          use git extended diff format

     -P, --push
          qpush after importing

  qinit
     hg qinit [-c]

     The queue repository is unversioned by default. If -c/--cre-
     ate-repo is specified, qinit will create a  separate  nested
     repository  for  patches  (qinit -c may also be run later to
     convert an unversioned patch  repository  into  a  versioned
     one).  You  can  use qcommit to commit changes to this queue
     repository.

     This command is deprecated.  Without  -c,  it's  implied  by
     other  relevant commands. With -c, use hg init --mq instead.

     Options:

     -c, --create-repo
          create queue repository

  qnew
     hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]...

     qnew creates a new patch on  top  of  the  currently-applied
     patch  (if any). The patch will be initialized with any out-
     standing changes in the working directory. You may also  use
     -I/--include, -X/--exclude, and/or a list of files after the
     patch name to add only changes to matching files to the  new
     patch, leaving the rest as uncommitted modifications.

     -u/--user  and -d/--date can be used to set the (given) user
     and date, respectively. -U/--currentuser  and  -D/--current-
     date set user to current user and date to current date.

     -e/--edit, -m/--message or -l/--logfile set the patch header
     as well as the commit message. If  none  is  specified,  the
     header is empty and the commit message is '[mq]: PATCH'.

     Use  the  -g/--git  option  to  keep  the  patch  in the git
     extended diff format. Read the diffs  help  topic  for  more



SunOS 5.11                Last change:                        152






Mercurial Manual                                            HG(1)



     information  on why this is important for preserving permis-
     sion changes and copy/rename information.

     Returns 0 on successful creation of a new patch.

     Options:

     -e, --edit
          edit commit message

     -f, --force
          import uncommitted changes (DEPRECATED)

     -g, --git
          use git extended diff format

     -U, --currentuser
          add "From: <current user>" to patch

     -u, --user
          add "From: <USER>" to patch

     -D, --currentdate
          add "Date: <current date>" to patch

     -d, --date
          add "Date: <DATE>" to patch

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

  qnext
     hg qnext [-s]

     Returns 0 on success.

     Options:

     -s, --summary
          print first line of patch header

  qpop
     hg qpop [-a] [-f] [PATCH | INDEX]



SunOS 5.11                Last change:                        153






Mercurial Manual                                            HG(1)



     Without argument, pops off the top of the  patch  stack.  If
     given  a  patch  name,  keeps  popping off patches until the
     named patch is at the top of the stack.

     By default, abort if the working directory  contains  uncom-
     mitted  changes.  With  --keep-changes,  abort  only  if the
     uncommitted  files  overlap   with   patched   files.   With
     -f/--force, backup and discard changes made to such files.

     Return 0 on success.

     Options:

     -a, --all
          pop all patches

     -n, --name
          queue name to pop (DEPRECATED)

     --keep-changes
          tolerate non-conflicting local changes

     -f, --force
          forget any local changes to patched files

     --no-backup
          do not save backup copies of files

  qprev
     hg qprev [-s]

     Returns 0 on success.

     Options:

     -s, --summary
          print first line of patch header

  qpush
     hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]

     By  default,  abort if the working directory contains uncom-
     mitted changes.  With  --keep-changes,  abort  only  if  the
     uncommitted   files   overlap   with   patched  files.  With
     -f/--force, backup and patch over uncommitted changes.

     Return 0 on success.

     Options:

     --keep-changes
          tolerate non-conflicting local changes



SunOS 5.11                Last change:                        154






Mercurial Manual                                            HG(1)



     -f, --force
          apply on top of local changes

     -e, --exact
          apply the target patch to its recorded parent

     -l, --list
          list patch name in commit text

     -a, --all
          apply all patches

     -m, --merge
          merge from another queue (DEPRECATED)

     -n, --name
          merge queue name (DEPRECATED)

     --move
          reorder patch series and apply only the patch

     --no-backup
          do not save backup copies of files

  qqueue
     hg qqueue [OPTION] [QUEUE]

     Supports switching between different patch queues,  as  well
     as creating new patch queues and deleting existing ones.

     Omitting  a queue name or specifying -l/--list will show you
     the registered queues -  by  default  the  "normal"  patches
     queue  is  registered.  The  currently  active queue will be
     marked with "(active)". Specifying --active will print  only
     the name of the active queue.

     To  create  a new queue, use -c/--create. The queue is auto-
     matically made active, except in the case  where  there  are
     applied  patches  from  the  currently  active  queue in the
     repository. Then the queue will only be created and  switch-
     ing will fail.

     To delete an existing queue, use --delete. You cannot delete
     the currently active queue.

     Returns 0 on success.

     Options:

     -l, --list
          list all available queues




SunOS 5.11                Last change:                        155






Mercurial Manual                                            HG(1)



     --active
          print name of active queue

     -c, --create
          create new queue

     --rename
          rename active queue

     --delete
          delete reference to queue

     --purge
          delete queue, and remove patch dir

  qrefresh
     hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]...

     If any file patterns are provided, the refreshed patch  will
     contain  only  the  modifications that match those patterns;
     the remaining  modifications  will  remain  in  the  working
     directory.

     If  -s/--short is specified, files currently included in the
     patch will be refreshed just like matched files  and  remain
     in the patch.

     If -e/--edit is specified, Mercurial will start your config-
     ured editor for you to enter a  message.  In  case  qrefresh
     fails,   you   will   find  a  backup  of  your  message  in
     .hg/last-message.txt.

     hg add/remove/copy/rename work as usual,  though  you  might
     want  to use git-style patches (-g/--git or [diff] git=1) to
     track copies and renames. See the diffs help topic for  more
     information on the git diff format.

     Returns 0 on success.

     Options:

     -e, --edit
          edit commit message

     -g, --git
          use git extended diff format

     -s, --short
          refresh  only  files already in the patch and specified
          files

     -U, --currentuser



SunOS 5.11                Last change:                        156






Mercurial Manual                                            HG(1)



          add/update author field in patch with current user

     -u, --user
          add/update author field in patch with given user

     -D, --currentdate
          add/update date field in patch with current date

     -d, --date
          add/update date field in patch with given date

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

  qrename
     hg qrename PATCH1 [PATCH2]

     With one argument, renames  the  current  patch  to  PATCH1.
     With two arguments, renames PATCH1 to PATCH2.

     Returns 0 on success.

        aliases: qmv

  qrestore
     hg qrestore [-d] [-u] REV

     This command is deprecated, use hg rebase instead.

     Options:

     -d, --delete
          delete save entry

     -u, --update
          update queue working directory

  qsave
     hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]

     This command is deprecated, use hg rebase instead.

     Options:



SunOS 5.11                Last change:                        157






Mercurial Manual                                            HG(1)



     -c, --copy
          copy patch directory

     -n, --name
          copy directory name

     -e, --empty
          clear queue status file

     -f, --force
          force copy

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

  qselect
     hg qselect [OPTION]... [GUARD]...

     Use  the  hg qguard command to set or print guards on patch,
     then use qselect to tell mq which guards  to  use.  A  patch
     will  be  pushed  if it has no guards or any positive guards
     match the currently selected guard, but will not  be  pushed
     if any negative guards match the current guard. For example:

     qguard foo.patch -- -stable    (negative guard)
     qguard bar.patch    +stable    (positive guard)
     qselect stable

     This activates the "stable" guard. mq  will  skip  foo.patch
     (because  it  has  a  negative  match)  but  push  bar.patch
     (because it has a positive match).

     With no arguments, prints the currently active guards.  With
     one argument, sets the active guard.

     Use  -n/--none  to  deactivate  guards  (no  other arguments
     needed).  When no guards are active, patches  with  positive
     guards  are  skipped  and  patches  with negative guards are
     pushed.

     qselect can change the guards on applied  patches.  It  does
     not pop guarded patches by default. Use --pop to pop back to
     the last applied patch that is not  guarded.  Use  --reapply
     (which  implies  --pop)  to  push  back to the current patch
     afterwards, but skip guarded patches.

     Use -s/--series to print a list of all guards in the  series
     file  (no  other arguments needed). Use -v for more informa-
     tion.



SunOS 5.11                Last change:                        158






Mercurial Manual                                            HG(1)



     Returns 0 on success.

     Options:

     -n, --none
          disable all guards

     -s, --series
          list all guards in series file

     --pop
          pop to before first guarded applied patch

     --reapply
          pop, then reapply patches

  qseries
     hg qseries [-ms]

     Returns 0 on success.

     Options:

     -m, --missing
          print patches not in series

     -s, --summary
          print first line of patch header

  qtop
     hg qtop [-s]

     Returns 0 on success.

     Options:

     -s, --summary
          print first line of patch header

  qunapplied
     hg qunapplied [-1] [-s] [PATCH]

     Returns 0 on success.

     Options:

     -1, --first
          show only the first patch

     -s, --summary
          print first line of patch header




SunOS 5.11                Last change:                        159






Mercurial Manual                                            HG(1)



  notify
     hooks for sending email push notifications

     This extension implements hooks to send email  notifications
     when  changesets  are  sent  from  or  received by the local
     repository.

     First, enable the extension as explained in hg  help  exten-
     sions,  and  register the hook you want to run. incoming and
     changegroup hooks are  run  when  changesets  are  received,
     while  outgoing  hooks  are  for  changesets sent to another
     repository:

     [hooks]
     # one email for each incoming changeset
     incoming.notify = python:hgext.notify.hook
     # one email for all incoming changesets
     changegroup.notify = python:hgext.notify.hook

     # one email for all outgoing changesets
     outgoing.notify = python:hgext.notify.hook

     This registers  the  hooks.  To  enable  notification,  sub-
     scribers  must  be  assigned to repositories. The [usersubs]
     section maps multiple repositories to a given recipient. The
     [reposubs]  section  maps  multiple  recipients  to a single
     repository:

     [usersubs]
     # key is subscriber email, value is a comma-separated list of repo patterns
     user@host = pattern

     [reposubs]
     # key is repo pattern, value is a comma-separated list of subscriber emails
     pattern = user@host

     A pattern is a glob matching the absolute path to a  reposi-
     tory, optionally combined with a revset expression. A revset
     expression, if present, is separated  from  the  glob  by  a
     hash. Example:

     [reposubs]
     */widgets#branch(release) = qa-team@example.com

     This  sends  to  qa-team@example.com whenever a changeset on
     the release branch triggers a notification in any repository
     ending in widgets.

     In  order to place them under direct user management, [user-
     subs] and [reposubs] sections may be placed  in  a  separate
     hgrc file and incorporated by reference:




SunOS 5.11                Last change:                        160






Mercurial Manual                                            HG(1)



     [notify]
     config = /path/to/subscriptionsfile

     Notifications  will  not be sent until the notify.test value
     is set to False; see below.

     Notifications content can be tweaked with the following con-
     figuration entries:

     notify.test
          If  True,  print  messages to stdout instead of sending
          them. Default: True.

     notify.sources
          Space-separated list of change  sources.  Notifications
          are activated only when a changeset's source is in this
          list. Sources may be:

            serve

                 changesets received via http or ssh

            pull

                 changesets received via hg pull

            unbundle

                 changesets received via hg unbundle

            push

                 changesets sent or received via hg push

            bundle

                 changesets sent via hg unbundle

     Default: serve.

     notify.strip
          Number of leading slashes to strip from url  paths.  By
          default,   notifications  reference  repositories  with
          their absolute path. notify.strip lets  you  turn  them
          into  relative  paths. For example, notify.strip=3 will
          change /long/path/repository into repository.  Default:
          0.

     notify.domain
          Default  email  domain for sender or recipients with no
          explicit domain.




SunOS 5.11                Last change:                        161






Mercurial Manual                                            HG(1)



     notify.style
          Style file to use when formatting emails.

     notify.template
          Template to use when formatting emails.

     notify.incoming
          Template to use when run as an incoming hook,  overrid-
          ing notify.template.

     notify.outgoing
          Template  to use when run as an outgoing hook, overrid-
          ing notify.template.

     notify.changegroup
          Template to use when running  as  a  changegroup  hook,
          overriding notify.template.

     notify.maxdiff
          Maximum number of diff lines to include in notification
          email. Set to 0 to disable the diff, or -1  to  include
          all of it. Default: 300.

     notify.maxsubject
          Maximum  number  of characters in email's subject line.
          Default: 67.

     notify.diffstat
          Set to True to include a diffstat before diff  content.
          Default: True.

     notify.merge
          If  True,  send  notifications  for  merge  changesets.
          Default: True.

     notify.mbox
          If set, append mails to this mbox file instead of send-
          ing. Default: None.

     notify.fromauthor
          If  set,  use the committer of the first changeset in a
          changegroup for the "From" field  of  the  notification
          mail.  If not set, take the user from the pushing repo.
          Default: False.

     If set, the following entries will also be used to customize
     the notifications:

     email.from
          Email  From  address to use if none can be found in the
          generated email content.




SunOS 5.11                Last change:                        162






Mercurial Manual                                            HG(1)



     web.baseurl
          Root repository URL to combine  with  repository  paths
          when making references. See also notify.strip.

  pager
     browse command output with an external pager

     To  set  the  pager that should be used, set the application
     variable:

     [pager]
     pager = less -FRX

     If no pager is set, the pager extensions uses  the  environ-
     ment  variable $PAGER. If neither pager.pager, nor $PAGER is
     set, no pager is used.

     You can disable the pager for  certain  commands  by  adding
     them to the pager.ignore list:

     [pager]
     ignore = version, help, update

     You  can  also  enable  the  pager only for certain commands
     using pager.attend. Below is the default list of commands to
     be paged:

     [pager]
     attend = annotate, cat, diff, export, glog, log, qdiff

     Setting  pager.attend  to an empty value will cause all com-
     mands to be paged.

     If pager.attend is present, pager.ignore will be ignored.

     To ignore global commands like hg version or  hg  help,  you
     have to specify them in your user configuration file.

     The  --pager=... option can also be used to control when the
     pager is used. Use a boolean value like yes, no, on, off, or
     use auto for normal behavior.

  patchbomb
     command to send changesets as (a series of) patch emails

     The  series is started off with a "[PATCH 0 of N]" introduc-
     tion, which describes the series as a whole.

     Each patch email has a Subject line of "[PATCH M of N] ...",
     using  the  first  line  of the changeset description as the
     subject text. The message contains two or three body parts:




SunOS 5.11                Last change:                        163






Mercurial Manual                                            HG(1)



     o The changeset description.

     o [Optional] The result of running diffstat on the patch.

     o The patch itself, as generated by hg export.

     Each message refers to the first in  the  series  using  the
     In-Reply-To  and References headers, so they will show up as
     a sequence in threaded mail and news readers,  and  in  mail
     archives.

     To configure other defaults, add a section like this to your
     configuration file:

     [email]
     from = My Name <my@email>
     to = recipient1, recipient2, ...
     cc = cc1, cc2, ...
     bcc = bcc1, bcc2, ...
     reply-to = address1, address2, ...

     Use [patchbomb] as configuration section name if you need to
     override global [email] address settings.

     Then  you  can  use the hg email command to mail a series of
     changesets as a patchbomb.

     You can also either configure the method option in the email
     section  to  be a sendmail compatible mailer or fill out the
     [smtp] section so that the patchbomb extension can automati-
     cally send patchbombs directly from the commandline. See the
     [email] and [smtp] sections in hgrc(5) for details.

  Commands
  email
     hg email [OPTION]... [DEST]...

     By default, diffs are sent in the  format  generated  by  hg
     export,  one per message. The series starts with a "[PATCH 0
     of N]" introduction, which describes the series as a  whole.

     Each patch email has a Subject line of "[PATCH M of N] ...",
     using the first line of the  changeset  description  as  the
     subject  text.   The  message  contains  two or three parts.
     First, the changeset description.

     With the -d/--diffstat option, if the  diffstat  program  is
     installed,  the  result  of running diffstat on the patch is
     inserted.

     Finally, the patch itself, as generated by hg export.




SunOS 5.11                Last change:                        164






Mercurial Manual                                            HG(1)



     With the -d/--diffstat or --confirm  options,  you  will  be
     presented with a final summary of all messages and asked for
     confirmation before the messages are sent.

     By default the patch is included as text in the  email  body
     for  easy  reviewing.  Using  the  -a/--attach  option  will
     instead create an attachment for the patch. With -i/--inline
     an  inline  attachment  will  be  created. You can include a
     patch both as text in the email body and as a regular or  an
     inline   attachment   by   combining   the   -a/--attach  or
     -i/--inline with the --body option.

     With -o/--outgoing, emails will be generated for patches not
     found in the destination repository (or only those which are
     ancestors of the specified revisions if any are provided)

     With -b/--bundle, changesets are selected as for --outgoing,
     but  a  single email containing a binary Mercurial bundle as
     an attachment will be sent.

     With -m/--mbox, instead of previewing each patchbomb message
     in  a pager or sending the messages directly, it will create
     a UNIX mailbox file with the patch emails. This mailbox file
     can  be  previewed  with  any mail user agent which supports
     UNIX mbox files.

     With -n/--test, all steps will run, but  mail  will  not  be
     sent.   You will be prompted for an email recipient address,
     a subject and an introductory message describing the patches
     of  your  patchbomb.   Then when all is done, patchbomb mes-
     sages are displayed. If the PAGER  environment  variable  is
     set,  your  pager  will  be fired up once for each patchbomb
     message, so you can verify everything is alright.

     In case email sending fails, you will find a backup of  your
     series introductory message in .hg/last-email.txt.

     Examples:

     hg email -r 3000          # send patch 3000 only
     hg email -r 3000 -r 3001  # send patches 3000 and 3001
     hg email -r 3000:3005     # send patches 3000 through 3005
     hg email 3000             # send patch 3000 (deprecated)

     hg email -o               # send all patches not in default
     hg email -o DEST          # send all patches not in DEST
     hg email -o -r 3000       # send all ancestors of 3000 not in default
     hg email -o -r 3000 DEST  # send all ancestors of 3000 not in DEST

     hg email -b               # send bundle of all patches not in default
     hg email -b DEST          # send bundle of all patches not in DEST
     hg email -b -r 3000       # bundle of all ancestors of 3000 not in default



SunOS 5.11                Last change:                        165






Mercurial Manual                                            HG(1)



     hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST

     hg email -o -m mbox &&    # generate an mbox file...
       mutt -R -f mbox         # ... and view it with mutt
     hg email -o -m mbox &&    # generate an mbox file ...
       formail -s sendmail \   # ... and use formail to send from the mbox
         -bm -t < mbox         # ... using sendmail

     Before  using this command, you will need to enable email in
     your hgrc. See the [email] section in hgrc(5) for details.

     Options:

     -g, --git
          use git extended diff format

     --plain
          omit hg patch header

     -o, --outgoing
          send changes not found in the target repository

     -b, --bundle
          send changes not in target as a binary bundle

     --bundlename
          name of the bundle attachment file (default: bundle)

     -r, --rev
          a revision to send

     --force
          run even when  remote  repository  is  unrelated  (with
          -b/--bundle)

     --base
          a  base  changeset  to specify instead of a destination
          (with -b/--bundle)

     --intro
          send an introduction email for a single patch

     --body
          send patches as inline message text (default)

     -a, --attach
          send patches as attachments

     -i, --inline
          send patches as inline attachments

     --bcc



SunOS 5.11                Last change:                        166






Mercurial Manual                                            HG(1)



          email addresses of blind carbon copy recipients

     -c, --cc
          email addresses of copy recipients

     --confirm
          ask for confirmation before sending

     -d, --diffstat
          add diffstat output to messages

     --date
          use the given date as the sending date

     --desc
          use the given file as the series description

     -f, --from
          email address of sender

     -n, --test
          print messages that would be sent

     -m, --mbox
          write messages to mbox file instead of sending them

     --reply-to
          email addresses replies should be sent to

     -s, --subject
          subject of first message (intro or single patch)

     --in-reply-to
          message identifier to reply to

     --flag
          flags to add in subject prefixes

     -t, --to
          email addresses of recipients

     -e, --ssh
          specify ssh command to use

     --remotecmd
          specify hg command to run on the remote side

     --insecure
          do not verify server certificate (ignoring  web.cacerts
          config)





SunOS 5.11                Last change:                        167






Mercurial Manual                                            HG(1)



  progress
     show progress bars for some actions

     This  extension  uses  the progress information logged by hg
     commands to draw progress bars that are  as  informative  as
     possible. Some progress bars only offer indeterminate infor-
     mation, while others have a definite end point.

     The following settings are available:

     [progress]
     delay = 3 # number of seconds (float) before showing the progress bar
     changedelay = 1 # changedelay: minimum delay before showing a new topic.
                     # If set to less than 3 * refresh, that value will
                     # be used instead.
     refresh = 0.1 # time in seconds between refreshes of the progress bar
     format = topic bar number estimate # format of the progress bar
     width = <none> # if set, the maximum width of the progress information
                    # (that is, min(width, term width) will be used)
     clear-complete = True # clear the progress bar after it's done
     disable = False # if true, don't show a progress bar
     assume-tty = False # if true, ALWAYS show a progress bar, unless
                        # disable is given

     Valid entries for the format field are topic,  bar,  number,
     unit,  estimate,  speed, and item. item defaults to the last
     20 characters of the item, but this can be changed by adding
     either  -<num>  which would take the last num characters, or
     +<num> for the first num characters.

  purge
     command to delete untracked files from the working directory

  Commands
  purge
     hg purge [OPTION]... [DIR]...

     Delete  files not known to Mercurial. This is useful to test
     local and uncommitted changes in an  otherwise-clean  source
     tree.

     This means that purge will delete:

     o Unknown files: files marked with "?" by hg status

     o Empty  directories:  in fact Mercurial ignores directories
       unless they contain files under source control management

     But it will leave untouched:

     o Modified and unmodified tracked files




SunOS 5.11                Last change:                        168






Mercurial Manual                                            HG(1)



     o Ignored files (unless --all is specified)

     o New files added to the repository (with hg add)

     If directories are given on the command line, only files  in
     these directories are considered.

     Be careful with purge, as you could irreversibly delete some
     files you forgot to add to the repository. If you only  want
     to  print  the list of files that this program would delete,
     use the --print option.

     Options:

     -a, --abort-on-err
          abort if an error occurs

     --all
          purge ignored files too

     -p, --print
          print filenames instead of deleting them

     -0, --print0
          end filenames with NUL, for  use  with  xargs  (implies
          -p/--print)

     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

          aliases: clean

  rebase
     command to move sets of revisions to a different ancestor

     This  extension  lets  you  rebase changesets in an existing
     Mercurial repository.

     For         more         information:          http://mercu-
     rial.selenic.com/wiki/RebaseExtension

  Commands
  rebase
     hg rebase [-s REV | -b REV] [-d REV] [OPTION]

     Rebase  uses  repeated  merging to graft changesets from one
     part of history (the source) onto another (the destination).
     This can be useful for linearizing local changes relative to
     a master development tree.



SunOS 5.11                Last change:                        169






Mercurial Manual                                            HG(1)



     You should not rebase  changesets  that  have  already  been
     shared  with  others.  Doing so will force everybody else to
     perform the same rebase or they will end up with  duplicated
     changesets after pulling in your rebased changesets.

     In  its  default  configuration,  Mercurial will prevent you
     from rebasing published changes.  See  hg  help  phases  for
     details.

     If  you  don't  specify a destination changeset (-d/--dest),
     rebase uses the current branch tip as the destination.  (The
     destination  changeset  is not modified by rebasing, but new
     changesets are added as its descendants.)

     You can specify which changesets to rebase in two ways: as a
     "source" changeset or as a "base" changeset. Both are short-
     hand for a topologically  related  set  of  changesets  (the
     "source  branch").  If  you  specify  source  (-s/--source),
     rebase will rebase that changeset and all of its descendants
     onto  dest.  If  you  specify  base (-b/--base), rebase will
     select ancestors of base back to but not including the  com-
     mon  ancestor  with  dest. Thus, -b is less precise but more
     convenient than -s: you can specify  any  changeset  in  the
     source  branch,  and rebase will select the whole branch. If
     you specify neither -s nor -b, rebase uses the parent of the
     working directory as the base.

     For  advanced  usage,  a  third way is available through the
     --rev option. It allows you to specify an arbitrary  set  of
     changesets  to  rebase. Descendants of revs you specify with
     this option are not automatically included in the rebase.

     By default, rebase recreates the changesets  in  the  source
     branch  as  descendants of dest and then destroys the origi-
     nals. Use --keep to preserve the original source changesets.
     Some  changesets  in the source branch (e.g. merges from the
     destination branch) may be dropped if they  no  longer  con-
     tribute any change.

     One  result  of  the  rules  for  selecting  the destination
     changeset and source branch is that,  unlike  merge,  rebase
     will  do  nothing  if  you  are at the branch tip of a named
     branch with two heads. You need to explicitly specify source
     and/or destination (or update to the other head, if it's the
     head of the intended source branch).

     If a rebase is interrupted to manually resolve a  merge,  it
     can   be   continued  with  --continue/-c  or  aborted  with
     --abort/-a.

     Returns 0 on success, 1 if nothing to rebase  or  there  are
     unresolved conflicts.



SunOS 5.11                Last change:                        170






Mercurial Manual                                            HG(1)



     Options:

     -s, --source
          rebase from the specified changeset

     -b, --base
          rebase  from the base of the specified changeset (up to
          greatest common ancestor of base and dest)

     -r, --rev
          rebase these revisions

     -d, --dest
          rebase onto the specified changeset

     --collapse
          collapse the rebased changesets

     -m, --message
          use text as collapse commit message

     -e, --edit
          invoke editor on commit messages

     -l, --logfile
          read collapse commit message from file

     --keep
          keep original changesets

     --keepbranches
          keep original branch names

     -D, --detach
          (DEPRECATED)

     -t, --tool
          specify merge tool

     -c, --continue
          continue an interrupted rebase

     -a, --abort
          abort an interrupted rebase

     --style
          display using template map file

     --template
          display with template





SunOS 5.11                Last change:                        171






Mercurial Manual                                            HG(1)



  record
     commands to interactively select changes for commit/qrefresh

  Commands
  qrecord
     hg qrecord [OPTION]... PATCH [FILE]...

     See  hg  help qnew & hg help record for more information and
     usage.

  record
     hg record [OPTION]... [FILE]...

     If a list of files is omitted, all changes  reported  by  hg
     status will be candidates for recording.

     See hg help dates for a list of formats valid for -d/--date.

     You will be prompted for whether to record changes  to  each
     modified file, and for files with multiple changes, for each
     change to use. For each query, the following  responses  are
     possible:

     y - record this change
     n - skip this change
     e - edit this change manually

     s - skip remaining changes to this file
     f - record remaining changes to this file

     d - done, skip remaining changes and files
     a - record all changes to all remaining files
     q - quit, recording no changes

     ? - display help

     This command is not available when committing a merge.

     Options:

     -A, --addremove
          mark  new/missing files as added/removed before commit-
          ting

     --close-branch
          mark a branch as closed, hiding it from the branch list

     --amend
          amend the parent of the working dir

     -s, --secret
          use the secret phase for committing



SunOS 5.11                Last change:                        172






Mercurial Manual                                            HG(1)



     -I, --include
          include names matching the given patterns

     -X, --exclude
          exclude names matching the given patterns

     -m, --message
          use text as commit message

     -l, --logfile
          read commit message from file

     -d, --date
          record the specified date as commit date

     -u, --user
          record the specified user as committer

     -S, --subrepos
          recurse into subrepositories

     -w, --ignore-all-space
          ignore white space when comparing lines

     -b, --ignore-space-change
          ignore changes in the amount of white space

     -B, --ignore-blank-lines
          ignore changes whose lines are all blank

  relink
     recreates hardlinks between repository clones

  Commands
  relink
     hg relink [ORIGIN]

     When  repositories are cloned locally, their data files will
     be hardlinked so that they only use the space  of  a  single
     repository.

     Unfortunately,  subsequent pulls into either repository will
     break hardlinks for any files touched by the new changesets,
     even if both repositories end up pulling the same changes.

     Similarly,  passing --rev to "hg clone" will fail to use any
     hardlinks, falling back to a complete  copy  of  the  source
     repository.

     This  command  lets you recreate those hardlinks and reclaim
     that wasted space.




SunOS 5.11                Last change:                        173






Mercurial Manual                                            HG(1)



     This repository will be relinked to share space with ORIGIN,
     which  must be on the same local disk. If ORIGIN is omitted,
     looks for "default-relink", then "default", in [paths].

     Do not attempt any read operations on this repository  while
     the  command  is  running. (Both repositories will be locked
     against writes.)

  schemes
     extend schemes with shortcuts to repository swarms

     This extension allows you to specify  shortcuts  for  parent
     URLs  with  a  lot of repositories to act like a scheme, for
     example:

     [schemes]
     py = http://code.python.org/hg/

     After that you can use it like:

     hg clone py://trunk/

     Additionally there is support for some more complex schemas,
     for example used by Google Code:

     [schemes]
     gcode = http://{1}.googlecode.com/hg/

     The  syntax  is taken from Mercurial templates, and you have
     unlimited number of variables, starting with {1} and contin-
     uing  with  {2},  {3} and so on. This variables will receive
     parts of URL supplied, split by /. Anything not specified as
     {part} will be just appended to an URL.

     For   convenience,  the  extension  adds  these  schemes  by
     default:

     [schemes]
     py = http://hg.python.org/
     bb = https://bitbucket.org/
     bb+ssh = ssh://hg@bitbucket.org/
     gcode = https://{1}.googlecode.com/hg/
     kiln = https://{1}.kilnhg.com/Repo/

     You can override a  predefined  scheme  by  defining  a  new
     scheme with the same name.

  share
     share a common history between several working directories

  Commands




SunOS 5.11                Last change:                        174






Mercurial Manual                                            HG(1)



  share
     hg share [-U] SOURCE [DEST]

     Initialize  a  new  repository  and  working  directory that
     shares its history with another repository.

     Note using rollback or extensions that  destroy/modify  his-
          tory  (mq,  rebase, etc.) can cause considerable confu-
          sion with shared clones. In particular, if  two  shared
          clones  are both updated to the same changeset, and one
          of them destroys  that  changeset  with  rollback,  the
          other  clone will suddenly stop working: all operations
          will fail with "abort: working  directory  has  unknown
          parent".  The only known workaround is to use debugset-
          parents on the broken clone to reset it to a  changeset
          that still exists.

     Options:

     -U, --noupdate
          do not create a working copy

  unshare
     hg unshare

     Copy  the  store  data to the repo and remove the sharedpath
     data.

  shelve
     save and restore changes to the working directory

     The "hg shelve" command saves changes made  to  the  working
     directory  and  reverts those changes, resetting the working
     directory to a clean state.

     Later on, the "hg unshelve"  command  restores  the  changes
     saved  by  "hg  shelve".  Changes can be restored even after
     updating to a different parent, in  which  case  Mercurial's
     merge machinery will resolve any conflicts if necessary.

     You  can  have more than one shelved change outstanding at a
     time; each shelved change has a distinct name. For  details,
     see the help for "hg shelve".

  Commands
  shelve
     hg shelve

     Shelving  takes files that "hg status" reports as not clean,
     saves the modifications to a bundle (a shelved change),  and
     reverts  the files so that their state in the working direc-
     tory becomes clean.



SunOS 5.11                Last change:                        175






Mercurial Manual                                            HG(1)



     To restore these changes to the working directory, using "hg
     unshelve";  this will work even if you switch to a different
     commit.

     When no files are specified, "hg shelve" saves all not-clean
     files.  If  specific  files  or  directories are named, only
     changes to those files are shelved.

     Each shelved change has a name that makes it easier to  find
     later.  The name of a shelved change defaults to being based
     on the active bookmark, or if there is no  active  bookmark,
     the  current named branch.  To specify a different name, use
     --name.

     To see a list of existing shelved changes,  use  the  --list
     option.  For  each shelved change, this will print its name,
     age,  and  description;  use  --patch  or  --stat  for  more
     details.

     To  delete specific shelved changes, use --delete. To delete
     all shelved changes, use --cleanup.

     Options:

     -A, --addremove
          mark new/missing files as added/removed before shelving

     --cleanup
          delete all shelved changes

     --date
          shelve with the specified commit date

     -d, --delete
          delete the named shelved change(s)

     -l, --list
          list current shelves

     -m, --message
          use text as shelve message

     -n, --name
          use the given name for the shelved commit

     -p, --patch
          show patch

     --stat
          output diffstat-style summary of changes





SunOS 5.11                Last change:                        176






Mercurial Manual                                            HG(1)



  unshelve
     hg unshelve [SHELVED]

     This command accepts an optional name of a shelved change to
     restore. If none is given, the most recent shelved change is
     used.

     If a shelved change is applied successfully, the bundle that
     contains the shelved changes is deleted afterwards.

     Since you can restore a shelved change on top  of  an  arbi-
     trary  commit, it is possible that unshelving will result in
     a conflict between your changes  and  the  commits  you  are
     unshelving  onto.  If this occurs, you must resolve the con-
     flict, then use --continue to complete the  unshelve  opera-
     tion. (The bundle will not be deleted until you successfully
     complete the unshelve.)

     (Alternatively, you can use --abort to abandon  an  unshelve
     that  causes a conflict. This reverts the unshelved changes,
     and does not delete the bundle.)

     Options:

     -a, --abort
          abort an incomplete unshelve operation

     -c, --continue
          continue an incomplete unshelve operation

     --keep
          keep shelve after unshelving

  strip
     strip changesets and their descendents from history

     This extension allows you to strip changesets and all  their
     descendants  from  the  repository. See the command help for
     details.

  Commands
  strip
     hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...

     The strip command removes the specified changesets  and  all
     their  descendants. If the working directory has uncommitted
     changes, the operation is aborted unless the --force flag is
     supplied, in which case changes will be discarded.

     If  a  parent of the working directory is stripped, then the
     working directory will automatically be updated to the  most
     recent  available  ancestor of the stripped parent after the



SunOS 5.11                Last change:                        177






Mercurial Manual                                            HG(1)



     operation completes.

     Any stripped changesets are stored in .hg/strip-backup as  a
     bundle  (see  hg help bundle and hg help unbundle). They can
     be restored by running hg unbundle  .hg/strip-backup/BUNDLE,
     where  BUNDLE  is the bundle file created by the strip. Note
     that the local revision numbers will in general be different
     after the restore.

     Use the --no-backup option to discard the backup bundle once
     the operation completes.

     Strip is not a history-rewriting operation and can  be  used
     on  changesets  in  the  public  phase.  But if the stripped
     changesets have been pushed to a remote repository you  will
     likely pull them again.

     Return 0 on success.

     Options:

     -r, --rev
          strip  specified  revision (optional, can specify revi-
          sions without this option)

     -f, --force
          force  removal  of  changesets,   discard   uncommitted
          changes (no backup)

     -b, --backup
          bundle  only  changesets  with  local  revision  number
          greater than REV which are not descendants of REV (DEP-
          RECATED)

     --no-backup
          no backups

     --nobackup
          no backups (DEPRECATED)

     -n   ignored  (DEPRECATED)

     -k, --keep
          do not modify working copy during strip

     -B, --bookmark
          remove revs only reachable from given bookmark

  transplant
     command to transplant changesets from another branch

     This  extension  allows you to transplant changes to another



SunOS 5.11                Last change:                        178






Mercurial Manual                                            HG(1)



     parent revision, possibly in another repository. The  trans-
     plant is done using 'diff' patches.

     Transplanted  patches  are recorded in .hg/transplant/trans-
     plants, as a map from a changeset hash to its  hash  in  the
     source repository.

  Commands
  transplant
     hg transplant [-s REPO] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]...

     Selected  changesets  will  be applied on top of the current
     working directory with the log of  the  original  changeset.
     The  changesets are copied and will thus appear twice in the
     history with different identities.

     Consider using the graft command if everything is inside the
     same repository - it will use merges and will usually give a
     better result.  Use the rebase extension if  the  changesets
     are unpublished and you want to move them instead of copying
     them.

     If --log is specified, log  messages  will  have  a  comment
     appended of the form:

     (transplanted from CHANGESETHASH)

     You  can  rewrite  the  changelog  message with the --filter
     option.  Its argument  will  be  invoked  with  the  current
     changelog message as $1 and the patch as $2.

     --source/-s  specifies another repository to use for select-
     ing changesets, just as if it temporarily had  been  pulled.
     If --branch/-b is specified, these revisions will be used as
     heads when deciding which changesets to transplant, just  as
     if  only  these  revisions  had been pulled.  If --all/-a is
     specified, all the revisions up to the heads specified  with
     --branch will be transplanted.

     Example:

     o transplant  all  changes  up to REV on top of your current
       revision:

       hg transplant --branch REV --all

     You can optionally mark selected transplanted changesets  as
     merge changesets. You will not be prompted to transplant any
     ancestors of a merged transplant, and you can merge  descen-
     dants of them normally instead of transplanting them.

     Merge  changesets may be transplanted directly by specifying



SunOS 5.11                Last change:                        179






Mercurial Manual                                            HG(1)



     the proper parent changeset by calling hg transplant  --par-
     ent.

     If  no  merges or revisions are provided, hg transplant will
     start an interactive changeset browser.

     If a changeset application fails, you can fix the  merge  by
     hand and then resume where you left off by calling hg trans-
     plant --continue/-c.

     Options:

     -s, --source
          transplant changesets from REPO

     -b, --branch
          use this source changeset as head

     -a, --all
          pull all changesets up to the --branch revisions

     -p, --prune
          skip over REV

     -m, --merge
          merge at REV

     --parent
          parent to choose when transplanting merge

     -e, --edit
          invoke editor on commit messages

     --log
          append transplant info to log message

     -c, --continue
          continue last transplant session after fixing conflicts

     --filter
          filter changesets through command

  win32mbcs
     allow the use of MBCS paths with problematic encodings

     Some  MBCS  encodings  are not good for some path operations
     (i.e.  splitting  path,  case  conversion,  etc.)  with  its
     encoded  bytes.  We call such a encoding (i.e. shift_jis and
     big5) as "problematic encoding".  This extension can be used
     to fix the issue with those encodings by wrapping some func-
     tions to convert to Unicode string before path operation.




SunOS 5.11                Last change:                        180






Mercurial Manual                                            HG(1)



     This extension is useful for:

     o Japanese Windows users using shift_jis encoding.

     o Chinese Windows users using big5 encoding.

     o All users who use a repository  with  one  of  problematic
       encodings on case-insensitive file system.

     This extension is not needed for:

     o Any user who use only ASCII chars in path.

     o Any user who do not use any of problematic encodings.

     Note  that  there  are some limitations on using this exten-
     sion:

     o You should use single encoding in one repository.

     o If the repository path ends with 0x5c, .hg/hgrc cannot  be
       read.

     o win32mbcs is not compatible with fixutf8 extension.

     By default, win32mbcs uses encoding.encoding decided by Mer-
     curial.  You can specify the encoding by config option:

     [win32mbcs]
     encoding = sjis

     It is useful for the users who want to commit with UTF-8 log
     message.

  win32text
     perform automatic newline conversion

        Deprecation:  The  win32text extension requires each user
        to configure the extension again and again for each clone
        since the configuration is not copied when cloning.

        We have therefore made the eol as an alternative. The eol
        uses a version controlled file for its configuration  and
        each clone will therefore use the right settings from the
        start.

     To perform automatic newline conversion, use:

     [extensions]
     win32text =
     [encode]
     ** = cleverencode:



SunOS 5.11                Last change:                        181






Mercurial Manual                                            HG(1)



     # or ** = macencode:

     [decode]
     ** = cleverdecode:
     # or ** = macdecode:

     If not doing conversion, to make  sure  you  do  not  commit
     CRLF/CR by accident:

     [hooks]
     pretxncommit.crlf = python:hgext.win32text.forbidcrlf
     # or pretxncommit.cr = python:hgext.win32text.forbidcr

     To  do  the  same  check on a server to prevent CRLF/CR from
     being pushed or pulled:

     [hooks]
     pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf
     # or pretxnchangegroup.cr = python:hgext.win32text.forbidcr

  zeroconf
     discover and advertise repositories on the local network

     Zeroconf-enabled repositories will be announced in a network
     without  the  need  to configure a server or a service. They
     can be discovered without knowing their actual IP address.

     To allow other people to discover your repository using  run
     hg serve in your repository:

     $ cd test
     $ hg serve

     You can discover Zeroconf-enabled repositories by running hg
     paths:

     $ hg paths
     zc-test = http://example.com:8000/test

FILES
     /etc/mercurial/hgrc, $HOME/.hgrc, .hg/hgrc

          This file contains defaults and  configuration.  Values
          in  .hg/hgrc  override  those in $HOME/.hgrc, and these
          override  settings  made  in  the  global   /etc/mercu-
          rial/hgrc  configuration.   See  hgrc(5) for details of
          the contents and format of these files.

     .hgignore

          This file contains regular expressions (one  per  line)
          that  describe file names that should be ignored by hg.



SunOS 5.11                Last change:                        182






Mercurial Manual                                            HG(1)



          For details, see hgignore(5).

     .hgsub

          This file defines the locations of all subrepositories,
          and  tells where the subrepository checkouts came from.
          For details, see hg help subrepos.

     .hgsubstate

          This file is where Mercurial stores all nested  reposi-
          tory  states.  NB: This file should not be edited manu-
          ally.

     .hgtags

          This file contains changeset hash values and  text  tag
          names (one of each separated by spaces) that correspond
          to tagged versions of the repository contents. The file
          content is encoded using UTF-8.

     .hg/last-message.txt

          This file is used by hg commit to store a backup of the
          commit message in case the commit fails.

     .hg/localtags

          This file can be used to define local  tags  which  are
          not  shared  among repositories. The file format is the
          same as for .hgtags, but it is encoded using the  local
          system encoding.

     /usr/demo/mercurial

          This  directory  contains assorted files which are part
          of the Mercurial distribution,  but  not  core  to  its
          functionality.   They  will generally need to be copied
          elsewhere to be of use.

     Some commands (e.g. revert) produce backup files  ending  in
     .orig,  if  the .orig file already exists and is not tracked
     by Mercurial, it will be overwritten.

BUGS
     Probably lots, please post them to  the  mailing  list  (see
     Resources below) when you find them.


ATTRIBUTES
     See   attributes(5)   for   descriptions  of  the  following
     attributes:



SunOS 5.11                Last change:                        183






Mercurial Manual                                            HG(1)



     +---------------+--------------------------------+
     |ATTRIBUTE TYPE |        ATTRIBUTE VALUE         |
     +---------------+--------------------------------+
     |Availability   | developer/versioning/mercurial |
     +---------------+--------------------------------+
     |Stability      | Committed                      |
     +---------------+--------------------------------+
SEE ALSO
     hgignore(5), hgrc(5)

AUTHOR
     Written by Matt Mackall <mpm@selenic.com>

RESOURCES
     Main Web Site: http://mercurial.selenic.com/

     Source code repository: http://selenic.com/hg

     Mailing list: http://selenic.com/mailman/listinfo/mercurial

COPYING
     Copyright (C) 2005-2013 Matt  Mackall.   Free  use  of  this
     software  is granted under the terms of the GNU General Pub-
     lic License version 2 or any later version.

AUTHOR
     Matt Mackall <mpm@selenic.com>

     Organization: Mercurial



NOTES
     This  software  was   built   from   source   available   at
     https://java.net/projects/solaris-userland.    The  original
     community       source       was       downloaded       from
     http://www.selenic.com/mercurial/release/mercu-
     rial-2.8.2.tar.gz

     Further information about this software can be found on  the
     open    source    community    website    at   http://mercu-
     rial.selenic.com/.













SunOS 5.11                Last change:                        184