mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Propagate context and ensure git commands run in request context (#17868)
This PR continues the work in #17125 by progressively ensuring that git commands run within the request context. This now means that the if there is a git repo already open in the context it will be used instead of reopening it. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
| package files | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"code.gitea.io/gitea/models" | ||||
| @@ -18,14 +19,16 @@ import ( | ||||
| // CreateCommitStatus creates a new CommitStatus given a bunch of parameters | ||||
| // NOTE: All text-values will be trimmed from whitespaces. | ||||
| // Requires: Repo, Creator, SHA | ||||
| func CreateCommitStatus(repo *repo_model.Repository, creator *user_model.User, sha string, status *models.CommitStatus) error { | ||||
| func CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, creator *user_model.User, sha string, status *models.CommitStatus) error { | ||||
| 	repoPath := repo.RepoPath() | ||||
|  | ||||
| 	// confirm that commit is exist | ||||
| 	gitRepo, err := git.OpenRepository(repoPath) | ||||
| 	gitRepo, closer, err := git.RepositoryFromContextOrOpen(ctx, repo.RepoPath()) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("OpenRepository[%s]: %v", repoPath, err) | ||||
| 	} | ||||
| 	defer closer.Close() | ||||
|  | ||||
| 	if _, err := gitRepo.GetCommit(sha); err != nil { | ||||
| 		gitRepo.Close() | ||||
| 		return fmt.Errorf("GetCommit[%s]: %v", sha, err) | ||||
| @@ -45,8 +48,8 @@ func CreateCommitStatus(repo *repo_model.Repository, creator *user_model.User, s | ||||
| } | ||||
|  | ||||
| // CountDivergingCommits determines how many commits a branch is ahead or behind the repository's base branch | ||||
| func CountDivergingCommits(repo *repo_model.Repository, branch string) (*git.DivergeObject, error) { | ||||
| 	divergence, err := git.GetDivergingCommits(repo.RepoPath(), repo.DefaultBranch, branch) | ||||
| func CountDivergingCommits(ctx context.Context, repo *repo_model.Repository, branch string) (*git.DivergeObject, error) { | ||||
| 	divergence, err := git.GetDivergingCommits(ctx, repo.RepoPath(), repo.DefaultBranch, branch) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user