Skip to content

Commit 93d1ec4

Browse files
ethantkoeniglafriks
authored andcommitted
Fix files/commits of merged PRs (#2970)
1 parent be41955 commit 93d1ec4

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

routers/repo/pull.go

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -257,12 +257,24 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) {
257257
setMergeTarget(ctx, pull)
258258
ctx.Data["HasMerged"] = true
259259

260-
ctx.Data["NumCommits"], err = ctx.Repo.GitRepo.CommitsCountBetween(pull.MergeBase, pull.MergedCommitID)
260+
mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
261+
if err != nil {
262+
ctx.Handle(500, "GetCommit", err)
263+
return
264+
}
265+
// the ID of the last commit in the PR (not including the merge commit)
266+
endCommitID, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
267+
if err != nil {
268+
ctx.Handle(500, "ParentID", err)
269+
return
270+
}
271+
272+
ctx.Data["NumCommits"], err = ctx.Repo.GitRepo.CommitsCountBetween(pull.MergeBase, endCommitID.String())
261273
if err != nil {
262274
ctx.Handle(500, "Repo.GitRepo.CommitsCountBetween", err)
263275
return
264276
}
265-
ctx.Data["NumFiles"], err = ctx.Repo.GitRepo.FilesCountBetween(pull.MergeBase, pull.MergedCommitID)
277+
ctx.Data["NumFiles"], err = ctx.Repo.GitRepo.FilesCountBetween(pull.MergeBase, endCommitID.String())
266278
if err != nil {
267279
ctx.Handle(500, "Repo.GitRepo.FilesCountBetween", err)
268280
return
@@ -338,19 +350,19 @@ func ViewPullCommits(ctx *context.Context) {
338350
ctx.Data["Username"] = ctx.Repo.Owner.Name
339351
ctx.Data["Reponame"] = ctx.Repo.Repository.Name
340352

341-
startCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergeBase)
353+
mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
342354
if err != nil {
343355
ctx.Handle(500, "Repo.GitRepo.GetCommit", err)
344356
return
345357
}
346-
endCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
358+
endCommitID, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
347359
if err != nil {
348-
ctx.Handle(500, "Repo.GitRepo.GetCommit", err)
360+
ctx.Handle(500, "ParentID", err)
349361
return
350362
}
351-
commits, err = ctx.Repo.GitRepo.CommitsBetween(endCommit, startCommit)
363+
commits, err = ctx.Repo.GitRepo.CommitsBetweenIDs(endCommitID.String(), pull.MergeBase)
352364
if err != nil {
353-
ctx.Handle(500, "Repo.GitRepo.CommitsBetween", err)
365+
ctx.Handle(500, "Repo.GitRepo.CommitsBetweenIDs", err)
354366
return
355367
}
356368
} else {
@@ -402,7 +414,17 @@ func ViewPullFiles(ctx *context.Context) {
402414

403415
diffRepoPath = ctx.Repo.GitRepo.Path
404416
startCommitID = pull.MergeBase
405-
endCommitID = pull.MergedCommitID
417+
mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
418+
if err != nil {
419+
ctx.Handle(500, "GetCommit", err)
420+
return
421+
}
422+
endCommitSha, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
423+
if err != nil {
424+
ctx.Handle(500, "ParentID", err)
425+
return
426+
}
427+
endCommitID = endCommitSha.String()
406428
gitRepo = ctx.Repo.GitRepo
407429

408430
headTarget = path.Join(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)

0 commit comments

Comments
 (0)