summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f3f25fc)
With the earlier implementation, adding '.git' to your ignored paths
would not protect '.git/x/y/z', which is not good ;).
def _ignored_file(self, filename):
"""
def _ignored_file(self, filename):
"""
- >>> ignored_paths = ['./a/', './b/']
- >>> ignored_files = ['x', 'y']
- >>> ignored_file('./a/z', ignored_paths, ignored_files, False, False)
+ >>> p = Project()
+ >>> p._ignored_paths = ['a', './b/']
+ >>> p._ignored_file('./a/')
- >>> ignored_file('./ab/z', ignored_paths, ignored_files, False, False)
- False
- >>> ignored_file('./ab/x', ignored_paths, ignored_files, False, False)
+ >>> p._ignored_file('b')
+ True
+ >>> p._ignored_file('a/z')
- >>> ignored_file('./ab/xy', ignored_paths, ignored_files, False, False)
+ >>> p._ignored_file('ab/z')
+ False
+ >>> p._ignored_file('./ab/a')
- >>> ignored_file('./z', ignored_paths, ignored_files, False, False)
+ >>> p._ignored_file('./z')
False
"""
filename = _os_path.relpath(filename, self._root)
if self._ignored_paths is not None:
False
"""
filename = _os_path.relpath(filename, self._root)
if self._ignored_paths is not None:
- for path in self._ignored_paths:
- if _fnmatch.fnmatch(filename, path):
- _LOG.debug('ignoring {} (matched {})'.format(
- filename, path))
- return True
+ base = filename
+ while base not in ['', '.', '..']:
+ for path in self._ignored_paths:
+ if _fnmatch.fnmatch(base, _os_path.normpath(path)):
+ _LOG.debug('ignoring {} (matched {})'.format(
+ filename, path))
+ return True
+ base = _os_path.split(base)[0]
if self._vcs and not self._vcs.is_versioned(filename):
_LOG.debug('ignoring {} (not versioned))'.format(filename))
return True
if self._vcs and not self._vcs.is_versioned(filename):
_LOG.debug('ignoring {} (not versioned))'.format(filename))
return True