/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/ignores.py

  • Committer: Jelmer Vernooij
  • Date: 2010-04-30 11:35:43 UTC
  • mfrom: (5195 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5197.
  • Revision ID: jelmer@samba.org-20100430113543-tiqqhmqa3d8no4iu
merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2006-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
25
25
    globbing,
26
26
    )
27
27
 
28
 
# This was the full ignore list for bzr 0.8
29
 
# please keep these sorted (in C locale order) to aid merging
30
 
OLD_DEFAULTS = [
31
 
    '#*#',
32
 
    '*$',
33
 
    '*,v',
34
 
    '*.BAK',
35
 
    '*.a',
36
 
    '*.bak',
37
 
    '*.elc',
38
 
    '*.exe',
39
 
    '*.la',
40
 
    '*.lo',
41
 
    '*.o',
42
 
    '*.obj',
43
 
    '*.orig',
44
 
    '*.py[oc]',
45
 
    '*.so',
46
 
    '*.tmp',
47
 
    '*~',
48
 
    '.#*',
49
 
    '.*.sw[nop]',
50
 
    '.*.tmp',
51
 
    # Our setup tests dump .python-eggs in the bzr source tree root
52
 
    './.python-eggs',
53
 
    '.DS_Store',
54
 
    '.arch-ids',
55
 
    '.arch-inventory',
56
 
    '.bzr.log',
57
 
    '.del-*',
58
 
    '.git',
59
 
    '.hg',
60
 
    '.jamdeps'
61
 
    '.libs',
62
 
    '.make.state',
63
 
    '.sconsign*',
64
 
    '.svn',
65
 
    '.sw[nop]',    # vim editing nameless file
66
 
    '.tmp*',
67
 
    'BitKeeper',
68
 
    'CVS',
69
 
    'CVS.adm',
70
 
    'RCS',
71
 
    'SCCS',
72
 
    'TAGS',
73
 
    '_darcs',
74
 
    'aclocal.m4',
75
 
    'autom4te*',
76
 
    'config.h',
77
 
    'config.h.in',
78
 
    'config.log',
79
 
    'config.status',
80
 
    'config.sub',
81
 
    'stamp-h',
82
 
    'stamp-h.in',
83
 
    'stamp-h1',
84
 
    '{arch}',
85
 
]
86
 
 
 
28
from trace import warning
87
29
 
88
30
# ~/.bazaar/ignore will be filled out using
89
31
# this ignore list, if it does not exist
100
42
]
101
43
 
102
44
 
 
45
 
103
46
def parse_ignore_file(f):
104
 
    """Read in all of the lines in the file and turn it into an ignore list"""
 
47
    """Read in all of the lines in the file and turn it into an ignore list
 
48
    
 
49
    Continue in the case of utf8 decoding errors, and emit a warning when 
 
50
    such and error is found. Optimise for the common case -- no decoding 
 
51
    errors.
 
52
    """
105
53
    ignored = set()
106
 
    for line in f.read().decode('utf8').split('\n'):
 
54
    ignore_file = f.read()
 
55
    try:
 
56
        # Try and parse whole ignore file at once.
 
57
        unicode_lines = ignore_file.decode('utf8').split('\n')
 
58
    except UnicodeDecodeError:
 
59
        # Otherwise go though line by line and pick out the 'good'
 
60
        # decodable lines
 
61
        lines = ignore_file.split('\n')
 
62
        unicode_lines = []
 
63
        for line_number, line in enumerate(lines):
 
64
            try:
 
65
                unicode_lines.append(line.decode('utf-8'))
 
66
            except UnicodeDecodeError:
 
67
                # report error about line (idx+1)
 
68
                warning('.bzrignore: On Line #%d, malformed utf8 character. '
 
69
                        'Ignoring line.' % (line_number+1))
 
70
 
 
71
    # Append each line to ignore list if it's not a comment line
 
72
    for line in unicode_lines:
107
73
        line = line.rstrip('\r\n')
108
74
        if not line or line.startswith('#'):
109
75
            continue