From 79dafe83103e6e54260a98ff0421ddd2f939f2c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Rowlands=20=28=EB=B3=80=EA=B8=B0=ED=98=B8=29?= Date: Thu, 4 Feb 2021 17:50:04 +0900 Subject: [PATCH] exp gc: prune any exp/exec refs which point to gc'd experiments (#5408) --- dvc/repo/experiments/gc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dvc/repo/experiments/gc.py b/dvc/repo/experiments/gc.py index b33d40b41..3dfeade22 100644 --- a/dvc/repo/experiments/gc.py +++ b/dvc/repo/experiments/gc.py @@ -3,6 +3,7 @@ from typing import Optional from dvc.repo import locked +from .base import EXEC_APPLY, EXEC_BRANCH, EXEC_CHECKPOINT from .utils import exp_refs logger = logging.getLogger(__name__) @@ -31,9 +32,20 @@ def gc( if not keep_revs: return 0 + exec_branch = repo.scm.get_ref(EXEC_BRANCH, follow=False) + exec_apply = repo.scm.get_ref(EXEC_APPLY) + exec_checkpoint = repo.scm.get_ref(EXEC_CHECKPOINT) + removed = 0 for ref_info in exp_refs(repo.scm): if ref_info.baseline_sha not in keep_revs: + ref = repo.scm.get_ref(str(ref_info)) + if exec_branch and str(ref_info): + repo.scm.remove_ref(EXEC_BRANCH) + if exec_apply and exec_apply == ref: + repo.scm.remove_ref(EXEC_APPLY) + if exec_checkpoint and exec_checkpoint == ref: + repo.scm.remove_ref(EXEC_CHECKPOINT) repo.scm.remove_ref(str(ref_info)) removed += 1