Fixes diff on merged pull requests (#7171)
This commit is contained in:
parent
499a8a1cdd
commit
1608f63e39
|
@ -1144,7 +1144,7 @@ func (pr *PullRequest) UpdatePatch() (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
headGitRepo.RemoveRemote(tmpRemote)
|
headGitRepo.RemoveRemote(tmpRemote)
|
||||||
}()
|
}()
|
||||||
pr.MergeBase, err = headGitRepo.GetMergeBase(tmpRemote, pr.BaseBranch, pr.HeadBranch)
|
pr.MergeBase, _, err = headGitRepo.GetMergeBase(tmpRemote, pr.BaseBranch, pr.HeadBranch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetMergeBase: %v", err)
|
return fmt.Errorf("GetMergeBase: %v", err)
|
||||||
} else if err = pr.Update(); err != nil {
|
} else if err = pr.Update(); err != nil {
|
||||||
|
|
|
@ -22,8 +22,8 @@ type CompareInfo struct {
|
||||||
NumFiles int
|
NumFiles int
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMergeBase checks and returns merge base of two branches.
|
// GetMergeBase checks and returns merge base of two branches and the reference used as base.
|
||||||
func (repo *Repository) GetMergeBase(tmpRemote string, base, head string) (string, error) {
|
func (repo *Repository) GetMergeBase(tmpRemote string, base, head string) (string, string, error) {
|
||||||
if tmpRemote == "" {
|
if tmpRemote == "" {
|
||||||
tmpRemote = "origin"
|
tmpRemote = "origin"
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ func (repo *Repository) GetMergeBase(tmpRemote string, base, head string) (strin
|
||||||
}
|
}
|
||||||
|
|
||||||
stdout, err := NewCommand("merge-base", base, head).RunInDir(repo.Path)
|
stdout, err := NewCommand("merge-base", base, head).RunInDir(repo.Path)
|
||||||
return strings.TrimSpace(stdout), err
|
return strings.TrimSpace(stdout), base, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCompareInfo generates and returns compare information between base and head branches of repositories.
|
// GetCompareInfo generates and returns compare information between base and head branches of repositories.
|
||||||
|
@ -59,7 +59,7 @@ func (repo *Repository) GetCompareInfo(basePath, baseBranch, headBranch string)
|
||||||
}
|
}
|
||||||
|
|
||||||
compareInfo := new(CompareInfo)
|
compareInfo := new(CompareInfo)
|
||||||
compareInfo.MergeBase, err = repo.GetMergeBase(tmpRemote, baseBranch, headBranch)
|
compareInfo.MergeBase, remoteBranch, err = repo.GetMergeBase(tmpRemote, baseBranch, headBranch)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// We have a common base
|
// We have a common base
|
||||||
logs, err := NewCommand("log", compareInfo.MergeBase+"..."+headBranch, prettyLogFormat).RunInDirBytes(repo.Path)
|
logs, err := NewCommand("log", compareInfo.MergeBase+"..."+headBranch, prettyLogFormat).RunInDirBytes(repo.Path)
|
||||||
|
|
|
@ -286,7 +286,7 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) *git.C
|
||||||
setMergeTarget(ctx, pull)
|
setMergeTarget(ctx, pull)
|
||||||
ctx.Data["HasMerged"] = true
|
ctx.Data["HasMerged"] = true
|
||||||
|
|
||||||
prInfo, err := ctx.Repo.GitRepo.GetCompareInfo(ctx.Repo.Repository.RepoPath(),
|
compareInfo, err := ctx.Repo.GitRepo.GetCompareInfo(ctx.Repo.Repository.RepoPath(),
|
||||||
pull.MergeBase, pull.GetGitRefName())
|
pull.MergeBase, pull.GetGitRefName())
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -301,9 +301,9 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *models.Issue) *git.C
|
||||||
ctx.ServerError("GetCompareInfo", err)
|
ctx.ServerError("GetCompareInfo", err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
ctx.Data["NumCommits"] = prInfo.Commits.Len()
|
ctx.Data["NumCommits"] = compareInfo.Commits.Len()
|
||||||
ctx.Data["NumFiles"] = prInfo.NumFiles
|
ctx.Data["NumFiles"] = compareInfo.NumFiles
|
||||||
return prInfo
|
return compareInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// PrepareViewPullInfo show meta information for a pull request preview page
|
// PrepareViewPullInfo show meta information for a pull request preview page
|
||||||
|
@ -336,7 +336,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
prInfo, err := headGitRepo.GetCompareInfo(models.RepoPath(repo.Owner.Name, repo.Name),
|
compareInfo, err := headGitRepo.GetCompareInfo(models.RepoPath(repo.Owner.Name, repo.Name),
|
||||||
pull.BaseBranch, pull.HeadBranch)
|
pull.BaseBranch, pull.HeadBranch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), "fatal: Not a valid object name") {
|
if strings.Contains(err.Error(), "fatal: Not a valid object name") {
|
||||||
|
@ -361,9 +361,9 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare
|
||||||
ctx.Data["ConflictedFiles"] = pull.ConflictedFiles
|
ctx.Data["ConflictedFiles"] = pull.ConflictedFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Data["NumCommits"] = prInfo.Commits.Len()
|
ctx.Data["NumCommits"] = compareInfo.Commits.Len()
|
||||||
ctx.Data["NumFiles"] = prInfo.NumFiles
|
ctx.Data["NumFiles"] = compareInfo.NumFiles
|
||||||
return prInfo
|
return compareInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// ViewPullCommits show commits for a pull request
|
// ViewPullCommits show commits for a pull request
|
||||||
|
|
Loading…
Reference in New Issue