@ -20,9 +20,11 @@ import (
// CompareInfo represents needed information for comparing references.
// CompareInfo represents needed information for comparing references.
type CompareInfo struct {
type CompareInfo struct {
MergeBase string
MergeBase string
Commits * list . List
BaseCommitID string
NumFiles int
HeadCommitID string
Commits * list . List
NumFiles int
}
}
// GetMergeBase checks and returns merge base of two branches and the reference used as base.
// 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 := new ( CompareInfo )
compareInfo . HeadCommitID , err = GetFullCommitID ( repo . Path , headBranch )
if err != nil {
compareInfo . HeadCommitID = headBranch
}
compareInfo . MergeBase , remoteBranch , err = repo . GetMergeBase ( tmpRemote , baseBranch , headBranch )
compareInfo . MergeBase , remoteBranch , err = repo . GetMergeBase ( tmpRemote , baseBranch , headBranch )
if err == nil {
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
// We have a common base - therefore we know that ... should work
logs , err := NewCommand ( "log" , compareInfo . MergeBase + "..." + headBranch , prettyLogFormat ) . RunInDirBytes ( repo . Path )
logs , err := NewCommand ( "log" , compareInfo . MergeBase + "..." + headBranch , prettyLogFormat ) . RunInDirBytes ( repo . Path )
if err != nil {
if err != nil {
@ -83,6 +95,7 @@ func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string)
if err != nil {
if err != nil {
compareInfo . MergeBase = remoteBranch
compareInfo . MergeBase = remoteBranch
}
}
compareInfo . BaseCommitID = compareInfo . MergeBase
}
}
// Count number of changed files.
// Count number of changed files.