mercurial/ignore.py
changeset 25065 8cf7f0c4cb14
parent 18089 0127366df8fe
child 25066 e91b32d3c67b
equal deleted inserted replaced
25064:3bbbadf69d0a 25065:8cf7f0c4cb14
    50                 break
    50                 break
    51         patterns.append(pat)
    51         patterns.append(pat)
    52 
    52 
    53     return patterns, warnings
    53     return patterns, warnings
    54 
    54 
       
    55 def readignorefile(filepath, warn, skipwarning=False):
       
    56     try:
       
    57         pats = []
       
    58         fp = open(filepath)
       
    59         pats, warnings = ignorepats(fp)
       
    60         fp.close()
       
    61         for warning in warnings:
       
    62             warn("%s: %s\n" % (filepath, warning))
       
    63     except IOError, inst:
       
    64         if not skipwarning:
       
    65             warn(_("skipping unreadable ignore file '%s': %s\n") %
       
    66                  (filepath, inst.strerror))
       
    67     return pats
       
    68 
    55 def readpats(root, files, warn):
    69 def readpats(root, files, warn):
    56     '''return a dict mapping ignore-file-name to list-of-patterns'''
    70     '''return a dict mapping ignore-file-name to list-of-patterns'''
    57 
    71 
    58     pats = {}
    72     pats = {}
    59     for f in files:
    73     for f in files:
    60         if f in pats:
    74         if f in pats:
    61             continue
    75             continue
    62         try:
    76         skipwarning = f == files[0]
    63             pats[f] = []
    77         pats[f] = readignorefile(f, warn, skipwarning=skipwarning)
    64             fp = open(f)
    78 
    65             pats[f], warnings = ignorepats(fp)
       
    66             fp.close()
       
    67             for warning in warnings:
       
    68                 warn("%s: %s\n" % (f, warning))
       
    69         except IOError, inst:
       
    70             if f != files[0]:
       
    71                 warn(_("skipping unreadable ignore file '%s': %s\n") %
       
    72                      (f, inst.strerror))
       
    73     return [(f, pats[f]) for f in files if f in pats]
    79     return [(f, pats[f]) for f in files if f in pats]
    74 
    80 
    75 def ignore(root, files, warn):
    81 def ignore(root, files, warn):
    76     '''return matcher covering patterns in 'files'.
    82     '''return matcher covering patterns in 'files'.
    77 
    83