mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Pass gitRepo down to GetRawDiff, since its used for main repo and wiki (#19461)
as per https://github.com/go-gitea/gitea/pull/19449#issuecomment-1105283931 pass gitRepo down to GetRawDiff, since its used for main repo and wiki
This commit is contained in:
		@@ -28,8 +28,8 @@ const (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetRawDiff dumps diff results of repository in given commit ID to io.Writer.
 | 
			
		||||
func GetRawDiff(ctx context.Context, repoPath, commitID string, diffType RawDiffType, writer io.Writer) error {
 | 
			
		||||
	return GetRawDiffForFile(ctx, repoPath, "", commitID, diffType, "", writer)
 | 
			
		||||
func GetRawDiff(repo *Repository, commitID string, diffType RawDiffType, writer io.Writer) error {
 | 
			
		||||
	return GetRepoRawDiffForFile(repo, "", commitID, diffType, "", writer)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetReverseRawDiff dumps the reverse diff results of repository in given commit ID to io.Writer.
 | 
			
		||||
@@ -46,17 +46,6 @@ func GetReverseRawDiff(ctx context.Context, repoPath, commitID string, writer io
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRawDiffForFile dumps diff results of file in given commit ID to io.Writer.
 | 
			
		||||
func GetRawDiffForFile(ctx context.Context, repoPath, startCommit, endCommit string, diffType RawDiffType, file string, writer io.Writer) error {
 | 
			
		||||
	repo, closer, err := RepositoryFromContextOrOpen(ctx, repoPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("RepositoryFromContextOrOpen: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer closer.Close()
 | 
			
		||||
 | 
			
		||||
	return GetRepoRawDiffForFile(repo, startCommit, endCommit, diffType, file, writer)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRepoRawDiffForFile dumps diff results of file in given commit ID to io.Writer according given repository
 | 
			
		||||
func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diffType RawDiffType, file string, writer io.Writer) error {
 | 
			
		||||
	commit, err := repo.GetCommit(endCommit)
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,6 @@ import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/context"
 | 
			
		||||
	"code.gitea.io/gitea/modules/convert"
 | 
			
		||||
@@ -268,17 +267,12 @@ func DownloadCommitDiffOrPatch(ctx *context.APIContext) {
 | 
			
		||||
	//     "$ref": "#/responses/string"
 | 
			
		||||
	//   "404":
 | 
			
		||||
	//     "$ref": "#/responses/notFound"
 | 
			
		||||
	repoPath := repo_model.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
 | 
			
		||||
	// TODO: use gitRepo from context
 | 
			
		||||
	if err := git.GetRawDiff(
 | 
			
		||||
		ctx,
 | 
			
		||||
		repoPath,
 | 
			
		||||
		ctx.Params(":sha"),
 | 
			
		||||
		git.RawDiffType(ctx.Params(":diffType")),
 | 
			
		||||
		ctx.Resp,
 | 
			
		||||
	); err != nil {
 | 
			
		||||
	sha := ctx.Params(":sha")
 | 
			
		||||
	diffType := git.RawDiffType(ctx.Params(":diffType"))
 | 
			
		||||
 | 
			
		||||
	if err := git.GetRawDiff(ctx.Repo.GitRepo, sha, diffType, ctx.Resp); err != nil {
 | 
			
		||||
		if git.IsErrNotExist(err) {
 | 
			
		||||
			ctx.NotFound(ctx.Params(":sha"))
 | 
			
		||||
			ctx.NotFound(sha)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		ctx.Error(http.StatusInternalServerError, "DownloadCommitDiffOrPatch", err)
 | 
			
		||||
 
 | 
			
		||||
@@ -151,7 +151,7 @@ func CherryPickPost(ctx *context.Context) {
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			if err := git.GetRawDiff(ctx, ctx.Repo.Repository.RepoPath(), sha, git.RawDiffType("patch"), buf); err != nil {
 | 
			
		||||
			if err := git.GetRawDiff(ctx.Repo.GitRepo, sha, git.RawDiffType("patch"), buf); err != nil {
 | 
			
		||||
				if git.IsErrNotExist(err) {
 | 
			
		||||
					ctx.NotFound("GetRawDiff", errors.New("commit "+ctx.Params(":sha")+" does not exist."))
 | 
			
		||||
					return
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,13 @@ package repo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	asymkey_model "code.gitea.io/gitea/models/asymkey"
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/charset"
 | 
			
		||||
@@ -381,15 +381,24 @@ func Diff(ctx *context.Context) {
 | 
			
		||||
 | 
			
		||||
// RawDiff dumps diff results of repository in given commit ID to io.Writer
 | 
			
		||||
func RawDiff(ctx *context.Context) {
 | 
			
		||||
	var repoPath string
 | 
			
		||||
	var gitRepo *git.Repository
 | 
			
		||||
	if ctx.Data["PageIsWiki"] != nil {
 | 
			
		||||
		repoPath = ctx.Repo.Repository.WikiPath()
 | 
			
		||||
		wikiRepo, err := git.OpenRepository(ctx, ctx.Repo.Repository.WikiPath())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.ServerError("OpenRepository", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		defer wikiRepo.Close()
 | 
			
		||||
		gitRepo = wikiRepo
 | 
			
		||||
	} else {
 | 
			
		||||
		repoPath = repo_model.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
 | 
			
		||||
		gitRepo = ctx.Repo.GitRepo
 | 
			
		||||
		if gitRepo == nil {
 | 
			
		||||
			ctx.ServerError("GitRepo not open", fmt.Errorf("no open git repo for '%s'", ctx.Repo.Repository.FullName()))
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if err := git.GetRawDiff(
 | 
			
		||||
		ctx,
 | 
			
		||||
		repoPath,
 | 
			
		||||
		gitRepo,
 | 
			
		||||
		ctx.Params(":sha"),
 | 
			
		||||
		git.RawDiffType(ctx.Params(":ext")),
 | 
			
		||||
		ctx.Resp,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user