From c13c3e269a523154eb0f9db090c35ab2ecb2caa6 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Jul 2026 11:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Acompare=20diff=20?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/hat/repo/repo.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/routers/hat/repo/repo.go b/routers/hat/repo/repo.go index c1e308c..325b14d 100644 --- a/routers/hat/repo/repo.go +++ b/routers/hat/repo/repo.go @@ -48,7 +48,11 @@ func PrepareComapreDiff( ctx.Data["CommitRepoLink"] = headRepo.Link() - headCommitID := headBranch + beforeCommitID := compareInfo.MergeBase + if compareInfo.DirectComparison() { + beforeCommitID = compareInfo.BaseCommitID + } + headCommitID := compareInfo.HeadCommitID if ctx.Data["HeadIsCommit"] == false { if ctx.Data["HeadIsTag"] == true { headCommitID, err = headGitRepo.GetTagCommitID(headBranch) @@ -73,8 +77,8 @@ func PrepareComapreDiff( gitRepo, _ := gitea_git.OpenRepository(ctx, repoPath) defer gitRepo.Close() - diff, err := gitdiff.GetDiffForAPI(ctx, gitRepo, &gitdiff.DiffOptions{ - BeforeCommitID: compareInfo.MergeBase, + diff, err := gitdiff.GetDiffForAPI(ctx, compareInfo.HeadGitRepo, &gitdiff.DiffOptions{ + BeforeCommitID: beforeCommitID, AfterCommitID: headCommitID, SkipTo: ctx.FormString("skip-to"), MaxLines: setting.Git.MaxGitDiffLines, @@ -88,7 +92,7 @@ func PrepareComapreDiff( return false } - diffShortStat, err := gitdiff.GetDiffShortStat(ctx, ctx.Repo.Repository, gitRepo, compareInfo.MergeBase, headCommitID) + diffShortStat, err := gitdiff.GetDiffShortStat(ctx, compareInfo.HeadRepo, compareInfo.HeadGitRepo, beforeCommitID, headCommitID) if err != nil { ctx.APIErrorInternal(err) return false @@ -229,13 +233,13 @@ func CompareDiff(ctx *context.APIContext) { }) } else { path := util.PathEscapeSegments(ctx.FormString("filepath")) - headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx) + headUser, _, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx) if ctx.Written() { return } defer headGitRepo.Close() - _ = PrepareComapreDiff(ctx, headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch, path) + _ = PrepareComapreDiff(ctx, headUser, compareInfo.HeadRepo, compareInfo.HeadGitRepo, compareInfo, baseBranch, headBranch, path) result := make([]CompareCommit, 0) for _, commit := range compareInfo.Commits {