exp gc: prune any exp/exec refs which point to gc'd experiments (#5408)

This commit is contained in:
Peter Rowlands (변기호)
2021-02-04 17:50:04 +09:00
committed by GitHub
parent 982802effc
commit 79dafe8310
+12
View File
@@ -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