diff options
author | Christopher Baines <mail@cbaines.net> | 2023-05-23 13:27:09 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-05-23 13:27:09 +0100 |
commit | b7712989871de72bd3191909d506adcc75ad86ff (patch) | |
tree | 22a1465267cc2a506f7fe3fbea0e5a2f39242edf /guix-qa-frontpage/manage-patch-branches.scm | |
parent | 3eb6599a12e7c7ea8c4570e34f7ad6a631d5977b (diff) | |
download | qa-frontpage-b7712989871de72bd3191909d506adcc75ad86ff.tar qa-frontpage-b7712989871de72bd3191909d506adcc75ad86ff.tar.gz |
Delete patch branches where master has changed too much
Since the patches were applied. This will help clear out patch branches after
big changes (e.g. core-updates) so that the patch branches can be regenerated
against an up to date master branch commit.
Diffstat (limited to 'guix-qa-frontpage/manage-patch-branches.scm')
-rw-r--r-- | guix-qa-frontpage/manage-patch-branches.scm | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/guix-qa-frontpage/manage-patch-branches.scm b/guix-qa-frontpage/manage-patch-branches.scm index c1cd819..db4fdc9 100644 --- a/guix-qa-frontpage/manage-patch-branches.scm +++ b/guix-qa-frontpage/manage-patch-branches.scm @@ -222,7 +222,10 @@ (define (perform-pass) (let ((issue-numbers (map string->number - (issue-numbers-for-branches)))) + (issue-numbers-for-branches))) + (latest-master-revision + (get-latest-processed-branch-revision "master"))) + (simple-format #t "checking for branches to delete (looking at ~A branches)\n" (length issue-numbers)) (for-each @@ -239,10 +242,14 @@ 'base))) (with-exception-handler (lambda (exn) - (if (and - (guix-data-service-error? exn) - (= (guix-data-service-error-response-code exn) - 404)) + (if (and (guix-data-service-error? exn) + (and=> + (dig + (guix-data-service-error-response-body exn) + "query_parameters" "base_commit" + "invalid") + (lambda (invalid) + (string=? invalid "unknown commit")))) (begin (simple-format (current-error-port) @@ -257,9 +264,25 @@ exn) #f))) (lambda () - (revision-details - (revision-details-url base-commit)) - #f) + (let ((derivation-change-count + (length + (revision-derivation-changes + (revision-derivation-changes-url + `((base . ,base-commit) + (target . ,latest-master-revision)) + ;; TODO: Maybe do something smarter here? + #:systems '("x86_64-linux")))))) + (if (> derivation-change-count 10000) + (begin + (simple-format + (current-error-port) + "Removing ~A, ~A derivation changes between base (~A) and latest master revision (~A)\n" + issue-number + derivation-change-count + base-commit + latest-master-revision) + #t) + #f))) #:unwind? #t))) (with-bare-git-repository |