]> source.dussan.org Git - gitea.git/commitdiff
Fix files/commits of merged PRs (#2970)
authorEthan Koenig <ethantkoenig@gmail.com>
Sat, 25 Nov 2017 19:38:15 +0000 (11:38 -0800)
committerLauris BH <lauris@nix.lv>
Sat, 25 Nov 2017 19:38:15 +0000 (21:38 +0200)
routers/repo/pull.go

index ac0d36c27854c1f7290840b27a0ceef4210e743f..14b09287341f0b5f0057f7924bb7a780b1d81a8e 100644 (file)
@@ -257,12 +257,24 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) {
        setMergeTarget(ctx, pull)
        ctx.Data["HasMerged"] = true
 
-       ctx.Data["NumCommits"], err = ctx.Repo.GitRepo.CommitsCountBetween(pull.MergeBase, pull.MergedCommitID)
+       mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
+       if err != nil {
+               ctx.Handle(500, "GetCommit", err)
+               return
+       }
+       // the ID of the last commit in the PR (not including the merge commit)
+       endCommitID, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
+       if err != nil {
+               ctx.Handle(500, "ParentID", err)
+               return
+       }
+
+       ctx.Data["NumCommits"], err = ctx.Repo.GitRepo.CommitsCountBetween(pull.MergeBase, endCommitID.String())
        if err != nil {
                ctx.Handle(500, "Repo.GitRepo.CommitsCountBetween", err)
                return
        }
-       ctx.Data["NumFiles"], err = ctx.Repo.GitRepo.FilesCountBetween(pull.MergeBase, pull.MergedCommitID)
+       ctx.Data["NumFiles"], err = ctx.Repo.GitRepo.FilesCountBetween(pull.MergeBase, endCommitID.String())
        if err != nil {
                ctx.Handle(500, "Repo.GitRepo.FilesCountBetween", err)
                return
@@ -338,19 +350,19 @@ func ViewPullCommits(ctx *context.Context) {
                ctx.Data["Username"] = ctx.Repo.Owner.Name
                ctx.Data["Reponame"] = ctx.Repo.Repository.Name
 
-               startCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergeBase)
+               mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
                if err != nil {
                        ctx.Handle(500, "Repo.GitRepo.GetCommit", err)
                        return
                }
-               endCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
+               endCommitID, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
                if err != nil {
-                       ctx.Handle(500, "Repo.GitRepo.GetCommit", err)
+                       ctx.Handle(500, "ParentID", err)
                        return
                }
-               commits, err = ctx.Repo.GitRepo.CommitsBetween(endCommit, startCommit)
+               commits, err = ctx.Repo.GitRepo.CommitsBetweenIDs(endCommitID.String(), pull.MergeBase)
                if err != nil {
-                       ctx.Handle(500, "Repo.GitRepo.CommitsBetween", err)
+                       ctx.Handle(500, "Repo.GitRepo.CommitsBetweenIDs", err)
                        return
                }
        } else {
@@ -402,7 +414,17 @@ func ViewPullFiles(ctx *context.Context) {
 
                diffRepoPath = ctx.Repo.GitRepo.Path
                startCommitID = pull.MergeBase
-               endCommitID = pull.MergedCommitID
+               mergedCommit, err := ctx.Repo.GitRepo.GetCommit(pull.MergedCommitID)
+               if err != nil {
+                       ctx.Handle(500, "GetCommit", err)
+                       return
+               }
+               endCommitSha, err := mergedCommit.ParentID(mergedCommit.ParentCount() - 1)
+               if err != nil {
+                       ctx.Handle(500, "ParentID", err)
+                       return
+               }
+               endCommitID = endCommitSha.String()
                gitRepo = ctx.Repo.GitRepo
 
                headTarget = path.Join(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)