summaryrefslogtreecommitdiff
path: root/mercurial/help/hgignore.txt
diff options
context:
space:
mode:
Diffstat (limited to 'mercurial/help/hgignore.txt')
-rw-r--r--mercurial/help/hgignore.txt89
1 files changed, 89 insertions, 0 deletions
diff --git a/mercurial/help/hgignore.txt b/mercurial/help/hgignore.txt
new file mode 100644
index 0000000..3f82177
--- /dev/null
+++ b/mercurial/help/hgignore.txt
@@ -0,0 +1,89 @@
+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 directory. 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`` configuration
+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 .hgignore, 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.
+
+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/