summaryrefslogtreecommitdiffstats
path: root/routers/private
diff options
context:
space:
mode:
authora1012112796 <1012112796@qq.com>2022-01-17 13:56:43 +0800
committerGitHub <noreply@github.com>2022-01-17 13:56:43 +0800
commit43a22c6a2166121ae65ce9919703cd9930818ab1 (patch)
tree687c9b43646b19319d9c3eb0304c2cb700d8f0ad /routers/private
parentbd7680f450f3a35ca7ce79d84e98d6e3f1649451 (diff)
downloadgitea-43a22c6a2166121ae65ce9919703cd9930818ab1.tar.gz
gitea-43a22c6a2166121ae65ce9919703cd9930818ab1.zip
show pull link for agit pull request also (#18235)
Diffstat (limited to 'routers/private')
-rw-r--r--routers/private/hook_post_receive.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go
index 7124ae9e81..5e315ede47 100644
--- a/routers/private/hook_post_receive.go
+++ b/routers/private/hook_post_receive.go
@@ -8,6 +8,7 @@ package private
import (
"fmt"
"net/http"
+ "strconv"
"strings"
"code.gitea.io/gitea/models"
@@ -124,6 +125,43 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
refFullName := opts.RefFullNames[i]
newCommitID := opts.NewCommitIDs[i]
+ // post update for agit pull request
+ if git.SupportProcReceive && strings.HasPrefix(refFullName, git.PullPrefix) {
+ if repo == nil {
+ repo = loadRepository(ctx, ownerName, repoName)
+ if ctx.Written() {
+ return
+ }
+ }
+
+ pullIndexStr := strings.TrimPrefix(refFullName, git.PullPrefix)
+ pullIndexStr = strings.Split(pullIndexStr, "/")[0]
+ pullIndex, _ := strconv.ParseInt(pullIndexStr, 10, 64)
+ if pullIndex <= 0 {
+ continue
+ }
+
+ pr, err := models.GetPullRequestByIndex(repo.ID, pullIndex)
+ if err != nil && !models.IsErrPullRequestNotExist(err) {
+ log.Error("Failed to get PR by index %v Error: %v", pullIndex, err)
+ ctx.JSON(http.StatusInternalServerError, private.Response{
+ Err: fmt.Sprintf("Failed to get PR by index %v Error: %v", pullIndex, err),
+ })
+ return
+ }
+ if pr == nil {
+ continue
+ }
+
+ results = append(results, private.HookPostReceiveBranchResult{
+ Message: setting.Git.PullRequestPushMessage && repo.AllowsPulls(),
+ Create: false,
+ Branch: "",
+ URL: fmt.Sprintf("%s/pulls/%d", repo.HTMLURL(), pr.Index),
+ })
+ continue
+ }
+
branch := git.RefEndName(opts.RefFullNames[i])
// If we've pushed a branch (and not deleted it)