mercurial/help.py
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 09 Jun 2007 01:04:28 -0300
changeset 4531 b51a8138292a
parent 3912 dbd828167384
child 4684 849f011dbf79
permissions -rw-r--r--
Avoid extra filelogs entries. Right now, there are some situations in which localrepo.filecommit can create filelog entries even though they're not needed. For example: - permissions for a file have changed; - qrefresh can create a filelog entry identical to its parent (see the added test); - convert-repo creates extra filelog entries in every merge where the first parent has added files (for example, changeset ebebe9577a1a of the kernel repo added extra filelog entries to files in the arch/blackfin directory, even though the merge should only touch the drivers/ata directory). This makes "hg log file" in a converted repo less useful than it could be, since it may mention many merges that don't actually touch that specific file. They all come from the same basic problem: localrepo.commit (through filecommit) creates new filelog entries for all files passed to it (except for some cases during a merge). Patch and test case provided by Benoit. This should fix issue351.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     1
# help.py - help data for mercurial
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     2
#
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     3
# Copyright 2006 Matt Mackall <mpm@selenic.com>
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     4
#
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     6
# of the GNU General Public License, incorporated herein by reference.
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     7
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     8
helptable = {
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     9
    "dates|Date Formats":
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    10
    r'''
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    11
    Some commands (backout, commit, tag) allow the user to specify a date.
3813
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    12
    Many date formats are acceptible. Here are some examples:
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    13
3813
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    14
    "Wed Dec 6 13:18:29 2006" (local timezone assumed)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    15
    "Dec 6 13:18 -0600" (year assumed, time offset provided)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    16
    "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    17
    "Dec 6" (midnight)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    18
    "13:18" (today assumed)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    19
    "3:39" (3:39AM assumed)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    20
    "3:39pm" (15:39)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    21
    "2006-12-6 13:18:29" (ISO 8601 format)
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    22
    "2006-12-6 13:18"
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    23
    "2006-12-6"
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    24
    "12-6"
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    25
    "12/6"
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    26
    "12/6/6" (Dec 6 2006)
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    27
3813
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    28
    Lastly, there is Mercurial's internal format:
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    29
3813
6fa11a9d7cac Update dates help topic
Matt Mackall <mpm@selenic.com>
parents: 3802
diff changeset
    30
    "1165432709 0" (Wed Dec 6 13:18:29 2006 UTC)
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    31
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    32
    This is the internal representation format for dates. unixtime is
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    33
    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    34
    is the offset of the local timezone, in seconds west of UTC (negative
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    35
    if the timezone is east of UTC).
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    36
    ''',
3802
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
    37
3801
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    38
    'environment|env|Environment Variables':
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    39
    r'''
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    40
HGEDITOR::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    41
    This is the name of the editor to use when committing. Defaults to the
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    42
    value of EDITOR.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    43
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    44
    (deprecated, use .hgrc)
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    45
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    46
HGENCODING::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    47
    This overrides the default locale setting detected by Mercurial.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    48
    This setting is used to convert data including usernames,
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    49
    changeset descriptions, tag names, and branches. This setting can
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    50
    be overridden with the --encoding command-line option.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    51
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    52
HGENCODINGMODE::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    53
    This sets Mercurial's behavior for handling unknown characters
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    54
    while transcoding user inputs. The default is "strict", which
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    55
    causes Mercurial to abort if it can't translate a character. Other
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    56
    settings include "replace", which replaces unknown characters, and
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    57
    "ignore", which drops them. This setting can be overridden with
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    58
    the --encodingmode command-line option.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    59
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    60
HGMERGE::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    61
    An executable to use for resolving merge conflicts. The program
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    62
    will be executed with three arguments: local file, remote file,
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    63
    ancestor file.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    64
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    65
    The default program is "hgmerge", which is a shell script provided
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    66
    by Mercurial with some sensible defaults.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    67
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    68
    (deprecated, use .hgrc)
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    69
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    70
HGRCPATH::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    71
    A list of files or directories to search for hgrc files.  Item
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    72
    separator is ":" on Unix, ";" on Windows.  If HGRCPATH is not set,
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    73
    platform default search path is used.  If empty, only .hg/hgrc of
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    74
    current repository is read.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    75
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    76
    For each element in path, if a directory, all entries in directory
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    77
    ending with ".rc" are added to path.  Else, element itself is
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    78
    added to path.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    79
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    80
HGUSER::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    81
    This is the string used for the author of a commit.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    82
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    83
    (deprecated, use .hgrc)
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    84
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    85
EMAIL::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    86
    If HGUSER is not set, this will be used as the author for a commit.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    87
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    88
LOGNAME::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    89
    If neither HGUSER nor EMAIL is set, LOGNAME will be used (with
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    90
    '@hostname' appended) as the author value for a commit.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    91
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    92
EDITOR::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    93
    This is the name of the editor used in the hgmerge script. It will be
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    94
    used for commit messages if HGEDITOR isn't set. Defaults to 'vi'.
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    95
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    96
PYTHONPATH::
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    97
    This is used by Python to find imported modules and may need to be set
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3798
diff changeset
    98
    appropriately if Mercurial is not installed system-wide.
3802
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
    99
    ''',
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   100
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   101
    "patterns|File Name Patterns": r'''
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   102
    Mercurial accepts several notations for identifying one or more
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   103
    files at a time.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   104
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   105
    By default, Mercurial treats filenames as shell-style extended
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   106
    glob patterns.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   107
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   108
    Alternate pattern notations must be specified explicitly.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   109
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   110
    To use a plain path name without any pattern matching, start a
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   111
    name with "path:".  These path names must match completely, from
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   112
    the root of the current repository.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   113
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   114
    To use an extended glob, start a name with "glob:".  Globs are
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   115
    rooted at the current directory; a glob such as "*.c" will match
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   116
    files ending in ".c" in the current directory only.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   117
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   118
    The supported glob syntax extensions are "**" to match any string
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   119
    across path separators, and "{a,b}" to mean "a or b".
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   120
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   121
    To use a Perl/Python regular expression, start a name with "re:".
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   122
    Regexp pattern matching is anchored at the root of the repository.
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   123
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   124
    Plain examples:
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   125
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   126
    path:foo/bar   a name bar in a directory named foo in the root of
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   127
                   the repository
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   128
    path:path:name a file or directory named "path:name"
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   129
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   130
    Glob examples:
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   131
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   132
    glob:*.c       any name ending in ".c" in the current directory
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   133
    *.c            any name ending in ".c" in the current directory
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   134
    **.c           any name ending in ".c" in the current directory, or
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   135
                   any subdirectory
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   136
    foo/*.c        any name ending in ".c" in the directory foo
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   137
    foo/**.c       any name ending in ".c" in the directory foo, or any
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   138
                   subdirectory
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   139
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   140
    Regexp examples:
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   141
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   142
    re:.*\.c$      any name ending in ".c", anywhere in the repository
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   143
eb66d76c7746 move patterns topics
Matt Mackall <mpm@selenic.com>
parents: 3801
diff changeset
   144
''',
3798
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   145
}
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
   146