Fix PR link

to use ! instead of # . The later is for issues and only works due to
a redirect, which currently fails in gitea if a repo has its issue
tracker disabled.
This commit is contained in:
Jan Zerebecki
2025-08-19 16:27:39 +02:00
parent 6cbeaef6f2
commit 933ca9a3db
6 changed files with 14 additions and 10 deletions

View File

@@ -11,7 +11,7 @@ import (
"strings" "strings"
) )
const PrPattern = "PR: %s/%s#%d" const PrPattern = "PR: %s/%s!%d"
type BasicPR struct { type BasicPR struct {
Org, Repo string Org, Repo string
@@ -36,10 +36,14 @@ func parsePrLine(line string) (BasicPR, error) {
return ret, errors.New("missing / separator") return ret, errors.New("missing / separator")
} }
repo := strings.SplitN(org[1], "#", 2) repo := strings.SplitN(org[1], "!", 2)
ret.Repo = repo[0] ret.Repo = repo[0]
if len(repo) != 2 { if len(repo) != 2 {
return ret, errors.New("Missing # separator") repo := strings.SplitN(org[1], "#", 2)
ret.Repo = repo[0]
}
if len(repo) != 2 {
return ret, errors.New("Missing ! or # separator")
} }
// Gitea requires that each org and repo be [A-Za-z0-9_-]+ // Gitea requires that each org and repo be [A-Za-z0-9_-]+

View File

@@ -273,7 +273,7 @@ func (rs *PRSet) AssignReviewers(gitea GiteaReviewFetcherAndRequester, maintaine
if !IsDryRun { if !IsDryRun {
for _, r := range reviewers { for _, r := range reviewers {
if _, err := gitea.RequestReviews(pr.PR, r); err != nil { if _, err := gitea.RequestReviews(pr.PR, r); err != nil {
LogError("Cannot create reviews on", fmt.Sprintf("%s/%s#%d for [%s]", pr.PR.Base.Repo.Owner.UserName, pr.PR.Base.Repo.Name, pr.PR.Index, strings.Join(reviewers, ", ")), err) LogError("Cannot create reviews on", fmt.Sprintf("%s/%s!%d for [%s]", pr.PR.Base.Repo.Owner.UserName, pr.PR.Base.Repo.Name, pr.PR.Index, strings.Join(reviewers, ", ")), err)
} }
} }
} }
@@ -397,7 +397,7 @@ func (rs *PRSet) Merge(gitea GiteaReviewUnrequester, git Git) error {
panic("FIXME") panic("FIXME")
} }
*/ */
msg := fmt.Sprintf("Merging\n\nPR: %s/%s#%d", prjgit.Base.Repo.Owner.UserName, prjgit.Base.Repo.Name, prjgit.Index) msg := fmt.Sprintf("Merging\n\nPR: %s/%s!%d", prjgit.Base.Repo.Owner.UserName, prjgit.Base.Repo.Name, prjgit.Index)
err = git.GitExec(DefaultGitPrj, "merge", "--no-ff", "-m", msg, prjgit.Head.Sha) err = git.GitExec(DefaultGitPrj, "merge", "--no-ff", "-m", msg, prjgit.Head.Sha)
if err != nil { if err != nil {

View File

@@ -132,7 +132,7 @@ func PRtoString(pr *models.PullRequest) string {
return "(null)" return "(null)"
} }
return fmt.Sprintf("%s/%s#%d", pr.Base.Repo.Owner.UserName, pr.Base.Repo.Name, pr.Index) return fmt.Sprintf("%s/%s!%d", pr.Base.Repo.Owner.UserName, pr.Base.Repo.Name, pr.Index)
} }
type DevelProject struct { type DevelProject struct {

View File

@@ -157,7 +157,7 @@ func ProcessNotifications(notification *models.NotificationThread, gitea common.
repo := match[2] repo := match[2]
id, _ := strconv.ParseInt(match[3], 10, 64) id, _ := strconv.ParseInt(match[3], 10, 64)
common.LogInfo("processing:", fmt.Sprintf("%s/%s#%d", org, repo, id)) common.LogInfo("processing:", fmt.Sprintf("%s/%s!%d", org, repo, id))
pr, err := gitea.GetPullRequest(org, repo, id) pr, err := gitea.GetPullRequest(org, repo, id)
if err != nil { if err != nil {
common.LogError(" ** Cannot fetch PR associated with review:", subject.URL, "Error:", err) common.LogError(" ** Cannot fetch PR associated with review:", subject.URL, "Error:", err)
@@ -181,7 +181,7 @@ func ProcessNotifications(notification *models.NotificationThread, gitea common.
config := configs.GetPrjGitConfig(org, repo, pr.Base.Name) config := configs.GetPrjGitConfig(org, repo, pr.Base.Name)
if config == nil { if config == nil {
common.LogError("Cannot find config for:", fmt.Sprintf("%s/%s#%s", org, repo, pr.Base.Name)) common.LogError("Cannot find config for:", fmt.Sprintf("%s/%s!%s", org, repo, pr.Base.Name))
return return
} }
if pr.State == "closed" { if pr.State == "closed" {

View File

@@ -108,7 +108,7 @@ func ProcessNotification(notification *models.NotificationThread) {
repo := match[2] repo := match[2]
id, _ := strconv.ParseInt(match[3], 10, 64) id, _ := strconv.ParseInt(match[3], 10, 64)
common.LogInfo("processing:", fmt.Sprintf("%s/%s#%d", org, repo, id)) common.LogInfo("processing:", fmt.Sprintf("%s/%s!%d", org, repo, id))
pr, err := Gitea.GetPullRequest(org, repo, id) pr, err := Gitea.GetPullRequest(org, repo, id)
if err != nil { if err != nil {
common.LogError(" ** Cannot fetch PR associated with review:", subject.URL, "Error:", err) common.LogError(" ** Cannot fetch PR associated with review:", subject.URL, "Error:", err)

View File

@@ -80,7 +80,7 @@ func AllocatePRProcessor(req *common.PullRequestWebhookEvent, configs common.Aut
branch := req.Pull_Request.Base.Ref branch := req.Pull_Request.Base.Ref
PRstr := fmt.Sprintf("%s/%s#%d", org, repo, id) PRstr := fmt.Sprintf("%s/%s!%d", org, repo, id)
common.LogInfo("*** Starting processing PR:", PRstr, "branch:", branch) common.LogInfo("*** Starting processing PR:", PRstr, "branch:", branch)
config := configs.GetPrjGitConfig(org, repo, branch) config := configs.GetPrjGitConfig(org, repo, branch)