def _check_dirty(self) -> bool: # NOTE: dirty DVC lock files must be restored to index state to # avoid checking out incorrect persist or checkpoint outs dirty = [diff.a_path for diff in self.scm.repo.index.diff(None)] to_checkout = [fname for fname in dirty if is_lock_file(fname)] self.scm.repo.index.checkout(paths=to_checkout, force=True) untracked = self.scm.repo.untracked_files to_remove = [fname for fname in untracked if is_lock_file(fname)] for fname in to_remove: remove(fname) return (len(dirty) - len(to_checkout) + len(untracked) - len(to_remove)) != 0
def _prune_untracked_lockfiles(self): from dvc.dvcfile import is_lock_file from dvc.utils.fs import remove untracked = [ fname for fname in self.scm.untracked_files() if is_lock_file(fname) ] for fname in untracked: remove(fname)
def _prune_lockfiles(self): # NOTE: dirty DVC lock files must be restored to index state to # avoid checking out incorrect persist or checkpoint outs tree = self.scm.get_tree("HEAD") lock_files = [ str(fname) for fname in tree.walk_files(self.scm.root_dir) if is_lock_file(fname) ] if lock_files: self.scm.reset(paths=lock_files) self.scm.checkout_paths(lock_files, force=True)
def _prune_lockfiles(self): from dvc.dvcfile import is_lock_file # NOTE: dirty DVC lock files must be restored to index state to # avoid checking out incorrect persist or checkpoint outs fs = self.scm.get_fs("HEAD") lock_files = [ str(fname) for fname in fs.walk_files(self.scm.root_dir) if is_lock_file(fname) ] if lock_files: self.scm.reset(paths=lock_files) self.scm.checkout_index(paths=lock_files, force=True)