##// END OF EJS Templates
match: add 'include:' syntax...
match: add 'include:' syntax This allows the matcher to understand 'include:path/to/file' style rules. The files support the standard hgignore syntax and any rules read from the file are included in the matcher without regard to the files location in the repository (i.e. if the included file is in somedir/otherdir, all of it's rules will still apply to the entire repository).

File last commit:

r25167:6f7048cc default
r25215:4040e06e default
Show More
ignore.py
64 lines | 1.9 KiB | text/x-python | PythonLexer
Matt Mackall
dirstate: move ignore to its own file
r4609 # ignore.py - ignored file handling for mercurial
#
# Copyright 2007 Matt Mackall <mpm@selenic.com>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Matt Mackall
dirstate: move ignore to its own file
r4609
from i18n import _
Matt Mackall
match: change all users of util.matcher to match.match
r8566 import util, match
Durham Goode
ignore: refactor file read into a function...
r25065
Bryan O'Sullivan
ignore: refactor ignore into two functions...
r18087 def readpats(root, files, warn):
'''return a dict mapping ignore-file-name to list-of-patterns'''
pats = {}
for f in files:
Bryan O'Sullivan
ignore: only read an ignore file once
r18088 if f in pats:
continue
Durham Goode
ignore: move bad file handling out of readignorefile...
r25164 try:
Durham Goode
ignore: move readpatternfile to match.py...
r25167 pats[f] = match.readpatternfile(f, warn)
Durham Goode
ignore: move bad file handling out of readignorefile...
r25164 except IOError, inst:
warn(_("skipping unreadable ignore file '%s': %s\n") %
(f, inst.strerror))
Durham Goode
ignore: refactor file read into a function...
r25065
Bryan O'Sullivan
ignore: process hgignore files in deterministic order...
r18089 return [(f, pats[f]) for f in files if f in pats]
Bryan O'Sullivan
ignore: refactor ignore into two functions...
r18087
Matt Mackall
dirstate: move ignore to its own file
r4609 def ignore(root, files, warn):
Brendan Cully
ignore: separate pattern extraction from match compilation...
r9091 '''return matcher covering patterns in 'files'.
Matt Mackall
dirstate: move ignore to its own file
r4609
the files parsed for patterns include:
.hgignore in the repository root
any additional files specified in the [ui] section of ~/.hgrc
trailing white space is dropped.
the escape character is backslash.
comments start with #.
empty lines are skipped.
lines can be of the following formats:
syntax: regexp # defaults following lines to non-rooted regexps
syntax: glob # defaults following lines to non-rooted globs
re:pattern # non-rooted regular expression
glob:pattern # non-rooted glob
pattern # pattern of the current default type'''
Bryan O'Sullivan
ignore: refactor ignore into two functions...
r18087 pats = readpats(root, files, warn)
Matt Mackall
dirstate: move ignore to its own file
r4609
allpats = []
Bryan O'Sullivan
ignore: process hgignore files in deterministic order...
r18089 for f, patlist in pats:
Martin Geisler
remove unnecessary list comprehensions...
r13412 allpats.extend(patlist)
Matt Mackall
dirstate: move ignore to its own file
r4609 if not allpats:
return util.never
try:
Matt Mackall
match: add some default args
r8567 ignorefunc = match.match(root, '', [], allpats)
Matt Mackall
dirstate: move ignore to its own file
r4609 except util.Abort:
# Re-raise an exception where the src is the right file
Bryan O'Sullivan
ignore: process hgignore files in deterministic order...
r18089 for f, patlist in pats:
Matt Mackall
match: change all users of util.matcher to match.match
r8566 try:
Matt Mackall
match: add some default args
r8567 match.match(root, '', [], patlist)
Matt Mackall
match: change all users of util.matcher to match.match
r8566 except util.Abort, inst:
raise util.Abort('%s: %s' % (f, inst[0]))
Matt Mackall
dirstate: move ignore to its own file
r4609
return ignorefunc