Mercurial > hg-git
annotate hggit/gitdirstate.py @ 1128:6141895a53c9
compat: switch from hgutil.Abort to error.Abort
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Wed, 02 May 2018 20:43:17 -0500 |
parents | 8ed6c0cae9b8 |
children | c4703246f350 |
rev | line source |
---|---|
893 | 1 import os |
2 import stat | |
3 import re | |
4 import errno | |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
5 |
963
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
6 from mercurial import ( |
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
7 dirstate, |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
8 error, |
963
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
9 match as matchmod, |
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
10 scmutil, |
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
11 util, |
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
12 ) |
5db7e2be619e
gitdirstate: regularize mercurial imports
Siddharth Agarwal <sid0@fb.com>
parents:
910
diff
changeset
|
13 |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
14 try: |
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
15 from mercurial import ignore |
909
67b27ec080ae
ignore: evaluate ignore.readpats to see if ignore module really exists
Yuya Nishihara <yuya@tcha.org>
parents:
907
diff
changeset
|
16 ignore.readpats |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
17 ignoremod = True |
956
06385a2b30f3
init: handle AttributeError in addition to ImportError
timeless@gmail.com
parents:
910
diff
changeset
|
18 except (AttributeError, ImportError): |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
19 # ignore module was removed in Mercurial 3.5 |
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
20 ignoremod = False |
967
1bdabf776172
gitdirstate: fix up compat comment
Siddharth Agarwal <sid0@fb.com>
parents:
965
diff
changeset
|
21 # pathauditor moved to pathutil in 2.9 |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
22 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
23 from mercurial import pathutil |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
24 pathutil.pathauditor |
956
06385a2b30f3
init: handle AttributeError in addition to ImportError
timeless@gmail.com
parents:
910
diff
changeset
|
25 except (AttributeError, ImportError): |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
26 pathutil = scmutil |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
27 from mercurial.i18n import _ |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
28 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1110
diff
changeset
|
29 |
893 | 30 def gignorepats(orig, lines, root=None): |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
31 '''parse lines (iterable) of .gitignore text, returning a tuple of |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
32 (patterns, parse errors). These patterns should be given to compile() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
33 to be validated and converted into a match function.''' |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
34 syntaxes = {'re': 'relre:', 'regexp': 'relre:', 'glob': 'relglob:'} |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
35 syntax = 'glob:' |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
36 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
37 patterns = [] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
38 warnings = [] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
39 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
40 for line in lines: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
41 if "#" in line: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
42 _commentre = re.compile(r'((^|[^\\])(\\\\)*)#.*') |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
43 # remove comments prefixed by an even number of escapes |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
44 line = _commentre.sub(r'\1', line) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
45 # fixup properly escaped comments that survived the above |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
46 line = line.replace("\\#", "#") |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
47 line = line.rstrip() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
48 if not line: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
49 continue |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
50 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
51 if line.startswith('!'): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
52 warnings.append(_("unsupported ignore pattern '%s'") % line) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
53 continue |
718
9c6f083eecad
gignore: remove illegal components (issue92)
Takumi IINO <trot.thunder@gmail.com>
parents:
632
diff
changeset
|
54 if re.match(r'(:?.*/)?\.hg(:?/|$)', line): |
9c6f083eecad
gignore: remove illegal components (issue92)
Takumi IINO <trot.thunder@gmail.com>
parents:
632
diff
changeset
|
55 continue |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
56 rootprefix = '%s/' % root if root else '' |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
57 if line.startswith('/'): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
58 line = line[1:] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
59 rootsuffixes = [''] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
60 else: |
893 | 61 rootsuffixes = ['', '**/'] |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
62 for rootsuffix in rootsuffixes: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
63 pat = syntax + rootprefix + rootsuffix + line |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
64 for s, rels in syntaxes.iteritems(): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
65 if line.startswith(rels): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
66 pat = line |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
67 break |
893 | 68 elif line.startswith(s + ':'): |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
69 pat = rels + line[len(s) + 1:] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
70 break |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
71 patterns.append(pat) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
72 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
73 return patterns, warnings |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
74 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1110
diff
changeset
|
75 |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
76 def gignore(root, files, warn, extrapatterns=None): |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
77 allpats = [] |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
78 pats = [] |
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
79 if ignoremod: |
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
80 pats = ignore.readpats(root, files, warn) |
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
81 else: |
1046
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
82 pats = [(f, ['include:%s' % f]) for f in files] |
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
83 for f, patlist in pats: |
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
84 allpats.extend(patlist) |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
85 |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
86 if extrapatterns: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
87 allpats.extend(extrapatterns) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
88 if not allpats: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
89 return util.never |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
90 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
91 ignorefunc = matchmod.match(root, '', [], allpats) |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
92 except error.Abort: |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
93 for f, patlist in pats: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
94 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
95 matchmod.match(root, '', [], patlist) |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
96 except error.Abort, inst: |
1046
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
97 if not ignoremod: |
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
98 # in this case, patlist is ['include: FILE'], and |
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
99 # inst[0] should already include FILE |
cf982a23e15c
gitdirstate: show pattern error in hgignore file as expected
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
1037
diff
changeset
|
100 raise |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
101 raise error.Abort('%s: %s' % (f, inst[0])) |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
102 if extrapatterns: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
103 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
104 matchmod.match(root, '', [], extrapatterns) |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
105 except error.Abort, inst: |
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1115
diff
changeset
|
106 raise error.Abort('%s: %s' % ('extra patterns', inst[0])) |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
107 return ignorefunc |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
108 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1110
diff
changeset
|
109 |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
110 class gitdirstate(dirstate.dirstate): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
111 @dirstate.rootcache('.hgignore') |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
112 def _ignore(self): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
113 files = [self._join('.hgignore')] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
114 for name, path in self._ui.configitems("ui"): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
115 if name == 'ignore' or name.startswith('ignore.'): |
893 | 116 files.append(util.expandpath(path)) |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
117 patterns = [] |
871
c1c2af8aecb3
gitdirstate: fix whitespace
Siddharth Agarwal <sid0@fb.com>
parents:
860
diff
changeset
|
118 # Only use .gitignore if there's no .hgignore |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
119 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
120 fp = open(files[0]) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
121 fp.close() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
122 except: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
123 fns = self._finddotgitignores() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
124 for fn in fns: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
125 d = os.path.dirname(fn) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
126 fn = self.pathto(fn) |
860
cdf46071a83f
gitdirstate: avoid an abort when a .gitignore is missing
Mathias De Maré <mathias.demare@gmail.com>
parents:
718
diff
changeset
|
127 if not os.path.exists(fn): |
cdf46071a83f
gitdirstate: avoid an abort when a .gitignore is missing
Mathias De Maré <mathias.demare@gmail.com>
parents:
718
diff
changeset
|
128 continue |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
129 fp = open(fn) |
893 | 130 pats, warnings = gignorepats(None, fp, root=d) |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
131 for warning in warnings: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
132 self._ui.warn("%s: %s\n" % (fn, warning)) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
133 patterns.extend(pats) |
907
e5b10a710036
ignore: update ignore logic to match upstream
Durham Goode <durham@fb.com>
parents:
893
diff
changeset
|
134 return gignore(self._root, files, self._ui.warn, |
1110
94aaea5c65f7
cleanup: fix incorrect indentation
Sean Farley <sean@farley.io>
parents:
1046
diff
changeset
|
135 extrapatterns=patterns) |
871
c1c2af8aecb3
gitdirstate: fix whitespace
Siddharth Agarwal <sid0@fb.com>
parents:
860
diff
changeset
|
136 |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
137 def _finddotgitignores(self): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
138 """A copy of dirstate.walk. This is called from the new _ignore method, |
871
c1c2af8aecb3
gitdirstate: fix whitespace
Siddharth Agarwal <sid0@fb.com>
parents:
860
diff
changeset
|
139 which is called by dirstate.walk, which would cause infinite recursion, |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
140 except _finddotgitignores calls the superclass _ignore directly.""" |
893 | 141 match = matchmod.match(self._root, self.getcwd(), |
142 ['relglob:.gitignore']) | |
143 # TODO: need subrepos? | |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
144 subrepos = [] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
145 unknown = True |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
146 ignored = False |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
147 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
148 def fwarn(f, msg): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
149 self._ui.warn('%s: %s\n' % (self.pathto(f), msg)) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
150 return False |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
151 |
893 | 152 ignore = super(gitdirstate, self)._ignore |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
153 dirignore = self._dirignore |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
154 if ignored: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
155 ignore = util.never |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
156 dirignore = util.never |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
157 elif not unknown: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
158 # if unknown and ignored are False, skip step 2 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
159 ignore = util.always |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
160 dirignore = util.always |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
161 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
162 matchfn = match.matchfn |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
163 matchalways = match.always() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
164 matchtdir = match.traversedir |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
165 dmap = self._map |
1037
e3dab807e38c
compat: delay importing osutil until we know we need it
Kevin Bullock <kbullock@ringworld.org>
parents:
1022
diff
changeset
|
166 # osutil moved in hg 4.3, but util re-exports listdir |
1022
006c837f9181
gitdirstate: use util.listdir if available
Kevin Bullock <kbullock@ringworld.org>
parents:
967
diff
changeset
|
167 try: |
006c837f9181
gitdirstate: use util.listdir if available
Kevin Bullock <kbullock@ringworld.org>
parents:
967
diff
changeset
|
168 listdir = util.listdir |
006c837f9181
gitdirstate: use util.listdir if available
Kevin Bullock <kbullock@ringworld.org>
parents:
967
diff
changeset
|
169 except AttributeError: |
1037
e3dab807e38c
compat: delay importing osutil until we know we need it
Kevin Bullock <kbullock@ringworld.org>
parents:
1022
diff
changeset
|
170 from mercurial import osutil |
1022
006c837f9181
gitdirstate: use util.listdir if available
Kevin Bullock <kbullock@ringworld.org>
parents:
967
diff
changeset
|
171 listdir = osutil.listdir |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
172 lstat = os.lstat |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
173 dirkind = stat.S_IFDIR |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
174 regkind = stat.S_IFREG |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
175 lnkkind = stat.S_IFLNK |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
176 join = self._join |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
177 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
178 exact = skipstep3 = False |
893 | 179 if matchfn == match.exact: # match.exact |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
180 exact = True |
893 | 181 dirignore = util.always # skip step 2 |
182 elif match.files() and not match.anypats(): # match.match, no patterns | |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
183 skipstep3 = True |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
184 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
185 if not exact and self._checkcase: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
186 normalize = self._normalize |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
187 skipstep3 = False |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
188 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
189 normalize = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
190 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
191 # step 1: find all explicit files |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
192 results, work, dirsnotfound = self._walkexplicit(match, subrepos) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
193 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
194 skipstep3 = skipstep3 and not (work or dirsnotfound) |
872
da01212cd53a
gitdirstate: use normalized path from _walkexplicit
Siddharth Agarwal <sid0@fb.com>
parents:
871
diff
changeset
|
195 if work and isinstance(work[0], tuple): |
da01212cd53a
gitdirstate: use normalized path from _walkexplicit
Siddharth Agarwal <sid0@fb.com>
parents:
871
diff
changeset
|
196 # Mercurial >= 3.3.3 |
da01212cd53a
gitdirstate: use normalized path from _walkexplicit
Siddharth Agarwal <sid0@fb.com>
parents:
871
diff
changeset
|
197 work = [nd for nd, d in work if not dirignore(d)] |
da01212cd53a
gitdirstate: use normalized path from _walkexplicit
Siddharth Agarwal <sid0@fb.com>
parents:
871
diff
changeset
|
198 else: |
da01212cd53a
gitdirstate: use normalized path from _walkexplicit
Siddharth Agarwal <sid0@fb.com>
parents:
871
diff
changeset
|
199 work = [d for d in work if not dirignore(d)] |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
200 wadd = work.append |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
201 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
202 # step 2: visit subdirectories |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
203 while work: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
204 nd = work.pop() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
205 skip = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
206 if nd == '.': |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
207 nd = '' |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
208 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
209 skip = '.hg' |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
210 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
211 entries = listdir(join(nd), stat=True, skip=skip) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
212 except OSError, inst: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
213 if inst.errno in (errno.EACCES, errno.ENOENT): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
214 fwarn(nd, inst.strerror) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
215 continue |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
216 raise |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
217 for f, kind, st in entries: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
218 if normalize: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
219 nf = normalize(nd and (nd + "/" + f) or f, True, True) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
220 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
221 nf = nd and (nd + "/" + f) or f |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
222 if nf not in results: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
223 if kind == dirkind: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
224 if not ignore(nf): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
225 if matchtdir: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
226 matchtdir(nf) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
227 wadd(nf) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
228 if nf in dmap and (matchalways or matchfn(nf)): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
229 results[nf] = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
230 elif kind == regkind or kind == lnkkind: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
231 if nf in dmap: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
232 if matchalways or matchfn(nf): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
233 results[nf] = st |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
234 elif (matchalways or matchfn(nf)) and not ignore(nf): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
235 results[nf] = st |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
236 elif nf in dmap and (matchalways or matchfn(nf)): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
237 results[nf] = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
238 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
239 for s in subrepos: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
240 del results[s] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
241 del results['.hg'] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
242 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
243 # step 3: report unseen items in the dmap hash |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
244 if not skipstep3 and not exact: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
245 if not results and matchalways: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
246 visit = dmap.keys() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
247 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
248 visit = [f for f in dmap if f not in results and matchfn(f)] |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
249 visit.sort() |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
250 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
251 if unknown: |
893 | 252 # unknown == True means we walked the full directory tree |
253 # above. So if a file is not seen it was either a) not matching | |
254 # matchfn b) ignored, c) missing, or d) under a symlink | |
255 # directory. | |
615
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
256 audit_path = pathutil.pathauditor(self._root) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
257 |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
258 for nf in iter(visit): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
259 # Report ignored items in the dmap as long as they are not |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
260 # under a symlink directory. |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
261 if audit_path.check(nf): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
262 try: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
263 results[nf] = lstat(join(nf)) |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
264 except OSError: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
265 # file doesn't exist |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
266 results[nf] = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
267 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
268 # It's either missing or under a symlink directory |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
269 results[nf] = None |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
270 else: |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
271 # We may not have walked the full directory tree above, |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
272 # so stat everything we missed. |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
273 nf = iter(visit).next |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
274 for st in util.statfiles([join(i) for i in visit]): |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
275 results[nf()] = st |
503d403fc040
Fix for #68 | Use .gitignore files (with proper semantics)
Ben Kehoe <benk@berkeley.edu>
parents:
diff
changeset
|
276 return results.keys() |