From 1af608bf64b620a6d10af30675a3140dabfb9992 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Thu, 7 Nov 2019 13:10:16 +0200 Subject: [PATCH] checkout: don't cleanup links when checking out specific targets Related to #2671 --- dvc/repo/checkout.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dvc/repo/checkout.py b/dvc/repo/checkout.py index eda072321..d4e4b805f 100644 --- a/dvc/repo/checkout.py +++ b/dvc/repo/checkout.py @@ -10,14 +10,14 @@ from dvc.progress import Tqdm logger = logging.getLogger(__name__) -def _cleanup_unused_links(self, all_stages): +def _cleanup_unused_links(repo): used = [ out.fspath - for stage in all_stages + for stage in repo.stages for out in stage.outs if out.scheme == "local" ] - self.state.remove_unused_links(used) + repo.state.remove_unused_links(used) def get_all_files_numbers(stages): @@ -30,7 +30,11 @@ def _checkout( from dvc.stage import StageFileDoesNotExistError, StageFileBadNameError stages = set() - targets = targets or [None] + + if not targets: + targets = [None] + _cleanup_unused_links(self) + for target in targets: try: new = self.collect( @@ -42,7 +46,6 @@ def _checkout( raise raise CheckoutErrorSuggestGit(target, exc) - _cleanup_unused_links(self, self.stages) total = get_all_files_numbers(stages) if total == 0: logger.info("Nothing to do")