diff options
author | 6543 <6543@obermui.de> | 2021-08-31 06:16:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 06:16:23 +0200 |
commit | bb4cc876b1d0d5be5aa3fed7827ba3eac8f2ac18 (patch) | |
tree | 06103b4f7c74a70c8280d4b71fbebb6859ff66d3 /routers/web | |
parent | f2b4b0f491014753f509eccbcd157c198dd287b3 (diff) | |
download | gitea-bb4cc876b1d0d5be5aa3fed7827ba3eac8f2ac18.tar.gz gitea-bb4cc876b1d0d5be5aa3fed7827ba3eac8f2ac18.zip |
Repare and Improve GetDiffRangeWithWhitespaceBehavior (#16894)
* repare and improve GetDiffRangeWithWhitespaceBehavior
* Context with Timeout
Diffstat (limited to 'routers/web')
-rw-r--r-- | routers/web/repo/commit.go | 10 | ||||
-rw-r--r-- | routers/web/repo/compare.go | 8 | ||||
-rw-r--r-- | routers/web/repo/pull.go | 8 |
3 files changed, 12 insertions, 14 deletions
diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 6fbf11a1a0..810581640c 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -259,9 +259,8 @@ func Diff(ctx *context.Context) { repoName := ctx.Repo.Repository.Name commitID := ctx.Params(":sha") var ( - gitRepo *git.Repository - err error - repoPath string + gitRepo *git.Repository + err error ) if ctx.Data["PageIsWiki"] != nil { @@ -270,10 +269,9 @@ func Diff(ctx *context.Context) { ctx.ServerError("Repo.GitRepo.GetCommit", err) return } - repoPath = ctx.Repo.Repository.WikiPath() + defer gitRepo.Close() } else { gitRepo = ctx.Repo.GitRepo - repoPath = models.RepoPath(userName, repoName) } commit, err := gitRepo.GetCommit(commitID) @@ -297,7 +295,7 @@ func Diff(ctx *context.Context) { ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses) ctx.Data["CommitStatuses"] = statuses - diff, err := gitdiff.GetDiffCommitWithWhitespaceBehavior(repoPath, + diff, err := gitdiff.GetDiffCommitWithWhitespaceBehavior(gitRepo, commitID, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string))) diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go index ec65813656..ee8d376612 100644 --- a/routers/web/repo/compare.go +++ b/routers/web/repo/compare.go @@ -526,7 +526,7 @@ func PrepareCompareDiff( return true } - diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(models.RepoPath(headUser.Name, headRepo.Name), + diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(headGitRepo, compareInfo.MergeBase, headCommitID, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, whitespaceBehavior) if err != nil { @@ -616,11 +616,15 @@ func getBranchesAndTagsForRepo(user *models.User, repo *models.Repository) (bool // CompareDiff show different from one commit to another commit func CompareDiff(ctx *context.Context) { headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx) + defer func() { + if headGitRepo != nil { + headGitRepo.Close() + } + }() if ctx.Written() { return } - defer headGitRepo.Close() nothingToCompare := PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch, gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string))) diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index a41c9eb2b4..6e83a72c24 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -599,10 +599,9 @@ func ViewPullFiles(ctx *context.Context) { pull := issue.PullRequest var ( - diffRepoPath string startCommitID string endCommitID string - gitRepo *git.Repository + gitRepo = ctx.Repo.GitRepo ) var prInfo *git.CompareInfo @@ -619,9 +618,6 @@ func ViewPullFiles(ctx *context.Context) { return } - diffRepoPath = ctx.Repo.GitRepo.Path - gitRepo = ctx.Repo.GitRepo - headCommitID, err := gitRepo.GetRefCommitID(pull.GetGitRefName()) if err != nil { ctx.ServerError("GetRefCommitID", err) @@ -635,7 +631,7 @@ func ViewPullFiles(ctx *context.Context) { ctx.Data["Reponame"] = ctx.Repo.Repository.Name ctx.Data["AfterCommitID"] = endCommitID - diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(diffRepoPath, + diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(gitRepo, startCommitID, endCommitID, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string))) |