]> source.dussan.org Git - gitea.git/commitdiff
Restore detection of branches are equal on compare page (#14586)
authorzeripath <art27@cantab.net>
Tue, 16 Feb 2021 15:39:45 +0000 (15:39 +0000)
committerGitHub <noreply@github.com>
Tue, 16 Feb 2021 15:39:45 +0000 (16:39 +0100)
Somehow the test for detecting if branches are equal broke
this PR restores this functionality.

Fix #14502

Signed-off-by: Andrew Thornton <art27@cantab.net>
modules/git/repo_compare.go
routers/repo/compare.go

index 5f92bc7714c10eb4ba6bedc0e969f5bd63e6b5c1..3255e68392a2dec216bb544afef6e83e2b08bf44 100644 (file)
@@ -20,9 +20,11 @@ import (
 
 // CompareInfo represents needed information for comparing references.
 type CompareInfo struct {
-       MergeBase string
-       Commits   *list.List
-       NumFiles  int
+       MergeBase    string
+       BaseCommitID string
+       HeadCommitID string
+       Commits      *list.List
+       NumFiles     int
 }
 
 // GetMergeBase checks and returns merge base of two branches and the reference used as base.
@@ -66,8 +68,18 @@ func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string)
        }
 
        compareInfo := new(CompareInfo)
+
+       compareInfo.HeadCommitID, err = GetFullCommitID(repo.Path, headBranch)
+       if err != nil {
+               compareInfo.HeadCommitID = headBranch
+       }
+
        compareInfo.MergeBase, remoteBranch, err = repo.GetMergeBase(tmpRemote, baseBranch, headBranch)
        if err == nil {
+               compareInfo.BaseCommitID, err = GetFullCommitID(repo.Path, remoteBranch)
+               if err != nil {
+                       compareInfo.BaseCommitID = remoteBranch
+               }
                // We have a common base - therefore we know that ... should work
                logs, err := NewCommand("log", compareInfo.MergeBase+"..."+headBranch, prettyLogFormat).RunInDirBytes(repo.Path)
                if err != nil {
@@ -83,6 +95,7 @@ func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string)
                if err != nil {
                        compareInfo.MergeBase = remoteBranch
                }
+               compareInfo.BaseCommitID = compareInfo.MergeBase
        }
 
        // Count number of changed files.
index 4869e5919a94b3bac0b1dd4b7c05e9e60d7e4c56..2eef20f5ff317b1adb3f93fa82ddb43008977cdf 100644 (file)
@@ -423,18 +423,7 @@ func PrepareCompareDiff(
        // Get diff information.
        ctx.Data["CommitRepoLink"] = headRepo.Link()
 
-       headCommitID := headBranch
-       if ctx.Data["HeadIsCommit"] == false {
-               if ctx.Data["HeadIsTag"] == true {
-                       headCommitID, err = headGitRepo.GetTagCommitID(headBranch)
-               } else {
-                       headCommitID, err = headGitRepo.GetBranchCommitID(headBranch)
-               }
-               if err != nil {
-                       ctx.ServerError("GetRefCommitID", err)
-                       return false
-               }
-       }
+       headCommitID := compareInfo.HeadCommitID
 
        ctx.Data["AfterCommitID"] = headCommitID
 
@@ -460,18 +449,7 @@ func PrepareCompareDiff(
        }
 
        baseGitRepo := ctx.Repo.GitRepo
-       baseCommitID := baseBranch
-       if ctx.Data["BaseIsCommit"] == false {
-               if ctx.Data["BaseIsTag"] == true {
-                       baseCommitID, err = baseGitRepo.GetTagCommitID(baseBranch)
-               } else {
-                       baseCommitID, err = baseGitRepo.GetBranchCommitID(baseBranch)
-               }
-               if err != nil {
-                       ctx.ServerError("GetRefCommitID", err)
-                       return false
-               }
-       }
+       baseCommitID := compareInfo.BaseCommitID
 
        baseCommit, err := baseGitRepo.GetCommit(baseCommitID)
        if err != nil {