// 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.
}
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 {
if err != nil {
compareInfo.MergeBase = remoteBranch
}
+ compareInfo.BaseCommitID = compareInfo.MergeBase
}
// Count number of changed files.
// 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
}
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 {