mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-10 15:28:34 +01:00
exp gc: prune any exp/exec refs which point to gc'd experiments (#5408)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user