aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/repo
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-11-30 20:06:32 +0000
committerGitHub <noreply@github.com>2021-11-30 20:06:32 +0000
commit01087e9eef21ff5ea1cebbb1e84933954671fdf2 (patch)
treeae618785a3bd46e012096683e2fd2309f87c571d /routers/web/repo
parentd894c90b703ce215e2319ae2e2bf95989f77805d (diff)
downloadgitea-01087e9eef21ff5ea1cebbb1e84933954671fdf2.tar.gz
gitea-01087e9eef21ff5ea1cebbb1e84933954671fdf2.zip
Make Requests Processes and create process hierarchy. Associate OpenRepository with context. (#17125)
This PR registers requests with the process manager and manages hierarchy within the processes. Git repos are then associated with a context, (usually the request's context) - with sub commands using this context as their base context. Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'routers/web/repo')
-rw-r--r--routers/web/repo/branch.go2
-rw-r--r--routers/web/repo/http.go10
-rw-r--r--routers/web/repo/issue.go2
-rw-r--r--routers/web/repo/pull.go2
-rw-r--r--routers/web/repo/setting.go2
5 files changed, 8 insertions, 10 deletions
diff --git a/routers/web/repo/branch.go b/routers/web/repo/branch.go
index 64fb1afb2d..05b45eba4b 100644
--- a/routers/web/repo/branch.go
+++ b/routers/web/repo/branch.go
@@ -124,7 +124,7 @@ func RestoreBranchPost(ctx *context.Context) {
return
}
- if err := git.Push(ctx.Repo.Repository.RepoPath(), git.PushOptions{
+ if err := git.Push(ctx, ctx.Repo.Repository.RepoPath(), git.PushOptions{
Remote: ctx.Repo.Repository.RepoPath(),
Branch: fmt.Sprintf("%s:%s%s", deletedBranch.Commit, git.BranchPrefix, deletedBranch.Name),
Env: models.PushingEnvironment(ctx.User, ctx.Repo.Repository),
diff --git a/routers/web/repo/http.go b/routers/web/repo/http.go
index d1978aefe2..3aa8e84f57 100644
--- a/routers/web/repo/http.go
+++ b/routers/web/repo/http.go
@@ -8,7 +8,6 @@ package repo
import (
"bytes"
"compress/gzip"
- gocontext "context"
"fmt"
"net/http"
"os"
@@ -485,8 +484,10 @@ func serviceRPC(h serviceHandler, service string) {
h.environ = append(h.environ, "GIT_PROTOCOL="+protocol)
}
- ctx, cancel := gocontext.WithCancel(git.DefaultContext)
- defer cancel()
+ // ctx, cancel := gocontext.WithCancel(git.DefaultContext)
+ ctx, _, finished := process.GetManager().AddContext(h.r.Context(), fmt.Sprintf("%s %s %s [repo_path: %s]", git.GitExecutable, service, "--stateless-rpc", h.dir))
+ defer finished()
+
var stderr bytes.Buffer
cmd := exec.CommandContext(ctx, git.GitExecutable, service, "--stateless-rpc", h.dir)
cmd.Dir = h.dir
@@ -495,9 +496,6 @@ func serviceRPC(h serviceHandler, service string) {
cmd.Stdin = reqBody
cmd.Stderr = &stderr
- pid := process.GetManager().Add(fmt.Sprintf("%s %s %s [repo_path: %s]", git.GitExecutable, service, "--stateless-rpc", h.dir), cancel)
- defer process.GetManager().Remove(pid)
-
if err := cmd.Run(); err != nil {
log.Error("Fail to serve RPC(%s) in %s: %v - %s", service, h.dir, err, stderr.String())
return
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 2e0118e03f..f0857b18c0 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1594,7 +1594,7 @@ func ViewIssue(ctx *context.Context) {
}
ctx.Data["IsPullBranchDeletable"] = canDelete &&
pull.HeadRepo != nil &&
- git.IsBranchExist(pull.HeadRepo.RepoPath(), pull.HeadBranch) &&
+ git.IsBranchExist(ctx, pull.HeadRepo.RepoPath(), pull.HeadBranch) &&
(!pull.HasMerged || ctx.Data["HeadBranchCommitID"] == ctx.Data["PullHeadCommitID"])
stillCanManualMerge := func() bool {
diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go
index 19e757dad8..7593e7fbc8 100644
--- a/routers/web/repo/pull.go
+++ b/routers/web/repo/pull.go
@@ -436,7 +436,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare
if pull.Flow == models.PullRequestFlowGithub {
headBranchExist = headGitRepo.IsBranchExist(pull.HeadBranch)
} else {
- headBranchExist = git.IsReferenceExist(baseGitRepo.Path, pull.GetGitRefName())
+ headBranchExist = git.IsReferenceExist(ctx, baseGitRepo.Path, pull.GetGitRefName())
}
if headBranchExist {
diff --git a/routers/web/repo/setting.go b/routers/web/repo/setting.go
index 76a24d9f40..4fc1e91c25 100644
--- a/routers/web/repo/setting.go
+++ b/routers/web/repo/setting.go
@@ -178,7 +178,7 @@ func SettingsPost(ctx *context.Context) {
}
}
- u, _ := git.GetRemoteAddress(ctx.Repo.Repository.RepoPath(), ctx.Repo.Mirror.GetRemoteName())
+ u, _ := git.GetRemoteAddress(ctx, ctx.Repo.Repository.RepoPath(), ctx.Repo.Mirror.GetRemoteName())
if u.User != nil && form.MirrorPassword == "" && form.MirrorUsername == u.User.Username() {
form.MirrorPassword, _ = u.User.Password()
}