]> source.dussan.org Git - gitea.git/commitdiff
Pass gitRepo down to GetRawDiff, since its used for main repo and wiki (#19461)
author6543 <6543@obermui.de>
Mon, 25 Apr 2022 18:45:18 +0000 (20:45 +0200)
committerGitHub <noreply@github.com>
Mon, 25 Apr 2022 18:45:18 +0000 (20:45 +0200)
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

modules/git/diff.go
routers/api/v1/repo/commits.go
routers/web/repo/cherry_pick.go
routers/web/repo/commit.go

index e11f63cabd6c394b3711bcdce0888a5d294c7bc6..c9d68bb130fe934300d43b48669bfb6754bbf2e8 100644 (file)
@@ -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)
index c79c34ec42961b4bfe6603aa82ab706720d6ed8a..b196ce97740de1325467e32d4f683e45b95f60af 100644 (file)
@@ -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)
index 926361ccd7686ecb57e14456355d6d0b257c9ff4..6667d27410873f13c2e2db94ea22fc1993c999f3 100644 (file)
@@ -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
index 2b1b5440d04aa2c1e543d6a23fc5bb1eae90ea0b..59d818672a8e1e3bc4969764f718759ea01f42a7 100644 (file)
@@ -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,