From a19deb2076ebc82bd5e5890910081edf1c655ec7 Mon Sep 17 00:00:00 2001 From: Alexander Schepanovski Date: Sat, 4 Jan 2020 11:32:16 +0700 Subject: [PATCH] dvc: optimize Git.is_tracked() Closes #3000 --- dvc/scm/git/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dvc/scm/git/__init__.py b/dvc/scm/git/__init__.py index 7c432855e0..3872c8e72e 100644 --- a/dvc/scm/git/__init__.py +++ b/dvc/scm/git/__init__.py @@ -229,7 +229,8 @@ def is_tracked(self, path): # it is equivalent to `bool(self.repo.git.ls_files(path))` by # functionality, but ls_files fails on unicode filenames path = relpath(path, self.root_dir) - return path in [i[0] for i in self.repo.index.entries] + # There are 4 stages, see BaseIndexEntry.stage + return any((path, i) in self.repo.index.entries for i in (0, 1, 2, 3)) def is_dirty(self): return self.repo.is_dirty()