aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/manage-patch-branches.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-05-23 13:27:09 +0100
committerChristopher Baines <mail@cbaines.net>2023-05-23 13:27:09 +0100
commitb7712989871de72bd3191909d506adcc75ad86ff (patch)
tree22a1465267cc2a506f7fe3fbea0e5a2f39242edf /guix-qa-frontpage/manage-patch-branches.scm
parent3eb6599a12e7c7ea8c4570e34f7ad6a631d5977b (diff)
downloadqa-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.scm39
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