forgejo: Enqueue the repository URL, not the pull request URL.

Previously the pull request URL (say,
https://codeberg.org/guix/guix/pulls/123) would be mistaken for the Git
repository URL.
This commit is contained in:
Ludovic Courtès 2025-07-16 20:24:33 +02:00
parent b35c26a74e
commit eec7715928
2 changed files with 22 additions and 12 deletions

View file

@ -106,16 +106,17 @@
(if (forgejo-pull-request-draft? pull-request)
(format #t "skipping Forgejo pull request draft ~s~%"
(forgejo-pull-request-url pull-request))
(let* ((url (forgejo-pull-request-url pull-request))
(let* ((date (time-utc->date (current-time time-utc))) ;XXX: approximate?
(reference (forgejo-pull-request-head pull-request))
(repository (forgejo-repository-reference-repository reference))
(url (forgejo-repository-url repository))
(branch (forgejo-repository-reference-ref reference))
(commit (forgejo-repository-reference-sha reference))
(label (forgejo-repository-reference-label reference))
(repository-id (git-repository-url->git-repository-id
conn url
;; Disable channel authentication for PRs.
#:authenticate? #f))
(date (time-utc->date (current-time time-utc))) ;XXX: approximate?
(reference (forgejo-pull-request-head pull-request))
(branch (forgejo-repository-reference-ref reference))
(commit (forgejo-repository-reference-sha reference))
(label (forgejo-repository-reference-label reference))
(branch-id (or (git-branch-for-repository-and-name
conn repository-id branch)
@ -124,13 +125,18 @@
(unless (git-commit-exists? conn commit)
(insert-git-commit-entry conn branch-id commit date))
(format #t "queuing commit ~a of branch '~a' of repository ~a for PR #~a~%"
commit branch url
(forgejo-pull-request-number pull-request))
(enqueue-load-new-guix-revision-job conn repository-id
commit label))))
(define (mark-pull-request-branch-for-deletion conn pull-request)
"Mark the branch associated with @var{pull-request}, a pull request being
closed, for deletion."
(let* ((url (forgejo-pull-request-url pull-request))
(let* ((reference (forgejo-pull-request-head pull-request))
(repository (forgejo-repository-reference-repository reference))
(url (forgejo-repository-url repository))
(repository-id (git-repository-url->git-repository-id
conn url #:create-if-missing? #f)))
(when repository-id
@ -142,6 +148,7 @@ closed, for deletion."
(when branch-id
;; Insert a commit entry with the empty string: this is interpreted
;; as BRANCH-ID being a candidate for deletion.
(format #t "marking pull request branch ~s of ~s for deletion~%"
branch url)
(format #t "marking branch '~a' of ~a (PR #~a) for deletion~%"
branch url
(forgejo-pull-request-number pull-request))
(insert-git-commit-entry conn branch-id "" date))))))

View file

@ -30,6 +30,9 @@
(define pull-request-url
"https://forgejo.example.org/base-repo/pulls/1")
(define pull-request-clone-url
"https://forgejo.example.org/source-repo/fork-name.git")
(define pull-request-commit
"582af40e8a059fa05c7048a7ac4f2eccbbd0183b")
@ -69,7 +72,7 @@
},
\"name\": \"fork-name\",
\"full_name\": \"fork-owner/fork-name\",
\"clone_url\": \"https://forgejo.example.org/source-repo/fork-name.git\",
\"clone_url\": \"" pull-request-clone-url "\",
\"html_url\": \"https://forgejo.example.org/source-repo/fork-name\"
}
}
@ -94,7 +97,7 @@
(test-equal "all-git-repositories"
`((label . #f)
(url . ,pull-request-url)
(url . ,pull-request-clone-url)
(link-url . #f)
(x-git-repo-header . #f)
(included-branches . #f)
@ -107,7 +110,7 @@
(commit-range-link-url-template . #f)
(file-link-url-template . #f))
(match (find (lambda (alist)
(equal? (assoc-ref alist 'url) pull-request-url))
(equal? (assoc-ref alist 'url) pull-request-clone-url))
(all-git-repositories conn))
((('id . id) rest ...)
;; Since the ID might vary depending on other tests run on this