Skip to content

Commit 1fd8b47

Browse files
authored
ignore: use use_dvcignore flag (#4274)
1 parent fe4f1f4 commit 1fd8b47

File tree

3 files changed

+18
-22
lines changed

3 files changed

+18
-22
lines changed

dvc/ignore.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,16 @@ def __init__(self, tree, root_dir):
131131
self.ignores_trie_tree[root_dir] = DvcIgnorePatterns(
132132
default_ignore_patterns, root_dir
133133
)
134-
for root, dirs, _ in self.tree.walk(self.root_dir):
134+
for root, dirs, _ in self.tree.walk(
135+
self.root_dir, use_dvcignore=False
136+
):
135137
self._update(root)
136138
self._update_sub_repo(root, dirs)
137139
dirs[:], _ = self(root, dirs, [])
138140

139141
def _update(self, dirname):
140142
ignore_file_path = os.path.join(dirname, DvcIgnore.DVCIGNORE_FILE)
141-
if self.tree.exists(ignore_file_path):
143+
if self.tree.exists(ignore_file_path, use_dvcignore=False):
142144
new_pattern = DvcIgnorePatterns.from_files(
143145
ignore_file_path, self.tree
144146
)

dvc/tree/git.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,8 @@ def dvcignore(self):
4646
from dvc.ignore import DvcIgnoreFilter, DvcIgnoreFilterNoop
4747

4848
root = self.dvcignore_root or self.tree_root
49-
if not self.use_dvcignore:
50-
return DvcIgnoreFilterNoop(self, root)
51-
self.use_dvcignore = False
52-
ret = DvcIgnoreFilter(self, root)
53-
self.use_dvcignore = True
54-
return ret
49+
cls = DvcIgnoreFilter if self.use_dvcignore else DvcIgnoreFilterNoop
50+
return cls(self, root)
5551

5652
def open(
5753
self, path, mode="r", encoding="utf-8"
@@ -160,7 +156,7 @@ def _walk(self, tree, topdown=True):
160156
if not topdown:
161157
yield os.path.normpath(tree.abspath), dirs, nondirs
162158

163-
def walk(self, top, topdown=True, onerror=None):
159+
def walk(self, top, topdown=True, onerror=None, use_dvcignore=True):
164160
"""Directory tree generator.
165161
166162
See `os.walk` for the docs. Differences:
@@ -178,9 +174,10 @@ def walk(self, top, topdown=True, onerror=None):
178174
return
179175

180176
for root, dirs, files in self._walk(tree, topdown=topdown):
181-
dirs[:], files[:] = self.dvcignore(
182-
os.path.abspath(root), dirs, files
183-
)
177+
if use_dvcignore:
178+
dirs[:], files[:] = self.dvcignore(
179+
os.path.abspath(root), dirs, files
180+
)
184181
yield root, dirs, files
185182

186183
def isexec(self, path):

dvc/tree/local.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,8 @@ def dvcignore(self):
5858
from dvc.ignore import DvcIgnoreFilter, DvcIgnoreFilterNoop
5959

6060
root = self.dvcignore_root or self.tree_root
61-
if not self.use_dvcignore:
62-
return DvcIgnoreFilterNoop(self, root)
63-
self.use_dvcignore = False
64-
ret = DvcIgnoreFilter(self, root)
65-
self.use_dvcignore = True
66-
return ret
61+
cls = DvcIgnoreFilter if self.use_dvcignore else DvcIgnoreFilterNoop
62+
return cls(self, root)
6763

6864
@staticmethod
6965
def open(path_info, mode="r", encoding=None):
@@ -101,7 +97,7 @@ def iscopy(self, path_info):
10197
System.is_symlink(path_info) or System.is_hardlink(path_info)
10298
)
10399

104-
def walk(self, top, topdown=True, onerror=None):
100+
def walk(self, top, topdown=True, onerror=None, use_dvcignore=True):
105101
"""Directory tree generator.
106102
107103
See `os.walk` for the docs. Differences:
@@ -110,9 +106,10 @@ def walk(self, top, topdown=True, onerror=None):
110106
for root, dirs, files in os.walk(
111107
top, topdown=topdown, onerror=onerror
112108
):
113-
dirs[:], files[:] = self.dvcignore(
114-
os.path.abspath(root), dirs, files
115-
)
109+
if use_dvcignore:
110+
dirs[:], files[:] = self.dvcignore(
111+
os.path.abspath(root), dirs, files
112+
)
116113

117114
yield os.path.normpath(root), dirs, files
118115

0 commit comments

Comments
 (0)