mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	Move some functions to gitrepo package (#35543)
Refactor Git command functions to use WithXXX methods instead of exposing RunOpts. This change simplifies reuse across gitrepo and improves consistency, encapsulation, and maintainability of command options. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -37,14 +37,12 @@ type prTmpRepoContext struct { | ||||
| 	errbuf      *strings.Builder // any use should be preceded by a Reset and preferably after use | ||||
| } | ||||
|  | ||||
| func (ctx *prTmpRepoContext) RunOpts() *gitcmd.RunOpts { | ||||
| func (ctx *prTmpRepoContext) PrepareGitCmd(cmd *gitcmd.Command) *gitcmd.Command { | ||||
| 	ctx.outbuf.Reset() | ||||
| 	ctx.errbuf.Reset() | ||||
| 	return &gitcmd.RunOpts{ | ||||
| 		Dir:    ctx.tmpBasePath, | ||||
| 		Stdout: ctx.outbuf, | ||||
| 		Stderr: ctx.errbuf, | ||||
| 	} | ||||
| 	return cmd.WithDir(ctx.tmpBasePath). | ||||
| 		WithStdout(ctx.outbuf). | ||||
| 		WithStderr(ctx.errbuf) | ||||
| } | ||||
|  | ||||
| // createTemporaryRepoForPR creates a temporary repo with "base" for pr.BaseBranch and "tracking" for  pr.HeadBranch | ||||
| @@ -132,22 +130,23 @@ func createTemporaryRepoForPR(ctx context.Context, pr *issues_model.PullRequest) | ||||
| 		return nil, nil, fmt.Errorf("Unable to add base repository to temporary repo [%s -> tmpBasePath]: %w", pr.BaseRepo.FullName(), err) | ||||
| 	} | ||||
|  | ||||
| 	if err := gitcmd.NewCommand("remote", "add", "-t").AddDynamicArguments(pr.BaseBranch).AddArguments("-m").AddDynamicArguments(pr.BaseBranch).AddDynamicArguments("origin", baseRepoPath). | ||||
| 		Run(ctx, prCtx.RunOpts()); err != nil { | ||||
| 	if err := prCtx.PrepareGitCmd(gitcmd.NewCommand("remote", "add", "-t").AddDynamicArguments(pr.BaseBranch).AddArguments("-m").AddDynamicArguments(pr.BaseBranch).AddDynamicArguments("origin", baseRepoPath)). | ||||
| 		Run(ctx); err != nil { | ||||
| 		log.Error("%-v Unable to add base repository as origin [%s -> %s]: %v\n%s\n%s", pr, pr.BaseRepo.FullName(), tmpBasePath, err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 		cancel() | ||||
| 		return nil, nil, fmt.Errorf("Unable to add base repository as origin [%s -> tmpBasePath]: %w\n%s\n%s", pr.BaseRepo.FullName(), err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 	} | ||||
|  | ||||
| 	if err := gitcmd.NewCommand("fetch", "origin").AddArguments(fetchArgs...).AddDashesAndList(git.BranchPrefix+pr.BaseBranch+":"+git.BranchPrefix+baseBranch, git.BranchPrefix+pr.BaseBranch+":"+git.BranchPrefix+"original_"+baseBranch). | ||||
| 		Run(ctx, prCtx.RunOpts()); err != nil { | ||||
| 	if err := prCtx.PrepareGitCmd(gitcmd.NewCommand("fetch", "origin").AddArguments(fetchArgs...). | ||||
| 		AddDashesAndList(git.BranchPrefix+pr.BaseBranch+":"+git.BranchPrefix+baseBranch, git.BranchPrefix+pr.BaseBranch+":"+git.BranchPrefix+"original_"+baseBranch)). | ||||
| 		Run(ctx); err != nil { | ||||
| 		log.Error("%-v Unable to fetch origin base branch [%s:%s -> base, original_base in %s]: %v:\n%s\n%s", pr, pr.BaseRepo.FullName(), pr.BaseBranch, tmpBasePath, err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 		cancel() | ||||
| 		return nil, nil, fmt.Errorf("Unable to fetch origin base branch [%s:%s -> base, original_base in tmpBasePath]: %w\n%s\n%s", pr.BaseRepo.FullName(), pr.BaseBranch, err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 	} | ||||
|  | ||||
| 	if err := gitcmd.NewCommand("symbolic-ref").AddDynamicArguments("HEAD", git.BranchPrefix+baseBranch). | ||||
| 		Run(ctx, prCtx.RunOpts()); err != nil { | ||||
| 	if err := prCtx.PrepareGitCmd(gitcmd.NewCommand("symbolic-ref").AddDynamicArguments("HEAD", git.BranchPrefix+baseBranch)). | ||||
| 		Run(ctx); err != nil { | ||||
| 		log.Error("%-v Unable to set HEAD as base branch in [%s]: %v\n%s\n%s", pr, tmpBasePath, err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 		cancel() | ||||
| 		return nil, nil, fmt.Errorf("Unable to set HEAD as base branch in tmpBasePath: %w\n%s\n%s", err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| @@ -159,8 +158,8 @@ func createTemporaryRepoForPR(ctx context.Context, pr *issues_model.PullRequest) | ||||
| 		return nil, nil, fmt.Errorf("Unable to add head base repository to temporary repo [%s -> tmpBasePath]: %w", pr.HeadRepo.FullName(), err) | ||||
| 	} | ||||
|  | ||||
| 	if err := gitcmd.NewCommand("remote", "add").AddDynamicArguments(remoteRepoName, headRepoPath). | ||||
| 		Run(ctx, prCtx.RunOpts()); err != nil { | ||||
| 	if err := prCtx.PrepareGitCmd(gitcmd.NewCommand("remote", "add").AddDynamicArguments(remoteRepoName, headRepoPath)). | ||||
| 		Run(ctx); err != nil { | ||||
| 		log.Error("%-v Unable to add head repository as head_repo [%s -> %s]: %v\n%s\n%s", pr, pr.HeadRepo.FullName(), tmpBasePath, err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| 		cancel() | ||||
| 		return nil, nil, fmt.Errorf("Unable to add head repository as head_repo [%s -> tmpBasePath]: %w\n%s\n%s", pr.HeadRepo.FullName(), err, prCtx.outbuf.String(), prCtx.errbuf.String()) | ||||
| @@ -177,8 +176,8 @@ func createTemporaryRepoForPR(ctx context.Context, pr *issues_model.PullRequest) | ||||
| 	} else { | ||||
| 		headBranch = pr.GetGitHeadRefName() | ||||
| 	} | ||||
| 	if err := gitcmd.NewCommand("fetch").AddArguments(fetchArgs...).AddDynamicArguments(remoteRepoName, headBranch+":"+trackingBranch). | ||||
| 		Run(ctx, prCtx.RunOpts()); err != nil { | ||||
| 	if err := prCtx.PrepareGitCmd(gitcmd.NewCommand("fetch").AddArguments(fetchArgs...).AddDynamicArguments(remoteRepoName, headBranch+":"+trackingBranch)). | ||||
| 		Run(ctx); err != nil { | ||||
| 		cancel() | ||||
| 		if !gitrepo.IsBranchExist(ctx, pr.HeadRepo, pr.HeadBranch) { | ||||
| 			return nil, nil, git_model.ErrBranchNotExist{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user