Skip to content

Commit 7ec95d3

Browse files
authored
update o2-qc-repo-delete-time-interval: add argument to preserve 1 out of N versions. (#2616)
1 parent f7b63b8 commit 7ec95d3

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-delete-time-interval

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ def parse_args():
3232
parser.add_argument('--metadata', dest='metadata', action='store', default="",
3333
help='Delete only versions matching these metadata. Format: "[/key=value]*"')
3434
parser.add_argument('--yes', action='store_true', help='Answers yes to all. You should really not use that.')
35+
parser.add_argument('--preserve-one-out-of', dest='preserve_one_out_of', type=int, default=0,
36+
help='Preserve 1 out of N versions (e.g. 100 means keep every 100th version). Default: 0 (disable).')
3537

3638
args = parser.parse_args()
3739
dryable.set(args.dry_run)
@@ -60,20 +62,28 @@ def run(args):
6062
if answer.lower() not in ["y", "yes"]:
6163
exit(0)
6264

63-
for v in versions:
65+
deleted_count = 0
66+
for i, v in enumerate(versions):
67+
# Skip every Nth version if preservation is enabled
68+
if args.preserve_one_out_of and i % args.preserve_one_out_of == 0:
69+
logging.info(f"Preserving {v} (index {i})")
70+
continue
71+
6472
logging.info(f"Ready to delete {v}")
6573
if args.one_by_one:
6674
answer = input(" Continue? y/n\n ")
6775
if answer.lower() in ["y", "yes"]:
6876
ccdb.delete_version(v)
77+
deleted_count = deleted_count + 1
6978
elif answer.lower() in ["n", "no"]:
7079
logging.info(" skipping")
7180
else:
7281
logging.error(" wrong input, skipping")
7382
else:
7483
ccdb.delete_version(v)
84+
deleted_count = deleted_count + 1
7585

76-
logging.info(f"Deleted items: {len(versions)}")
86+
logging.info(f"Deleted items: {deleted_count}")
7787

7888

7989
# ****************

0 commit comments

Comments
 (0)