forked from Gitlink/gitea-1156
修复: pr 版本名修改以及hook新增pr版本
This commit is contained in:
parent
c1c985e193
commit
727f203fd3
|
@ -23,6 +23,21 @@ type PullRequestVersion struct {
|
|||
UpdatedUnix timeutil.TimeStamp `xorm:"updated INDEX"`
|
||||
}
|
||||
|
||||
func GetPullRequestLastVersionByPullRequest(pr *PullRequest) (*PullRequestVersion, error) {
|
||||
prv := &PullRequestVersion{
|
||||
RepoID: pr.BaseRepoID,
|
||||
PullID: pr.ID,
|
||||
}
|
||||
has, err := x.Desc("created_unix").Get(prv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, ErrPullRequestNotExist{}
|
||||
}
|
||||
|
||||
return prv, nil
|
||||
}
|
||||
|
||||
// NewPullRequestDiff creates new pull request diff version for repository.
|
||||
func NewPullRequestVersion(repo *Repository, pr *PullRequest, addLineNum, commitsCount, delLineNUm, filesCount int, headCommitID, baseCommitID, StartCommitID string) (err error) {
|
||||
var version PullRequestVersion
|
||||
|
|
|
@ -23,7 +23,6 @@ import (
|
|||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/services/gitdiff"
|
||||
pull_service "code.gitea.io/gitea/services/pull"
|
||||
repo_service "code.gitea.io/gitea/services/repository"
|
||||
)
|
||||
|
@ -405,8 +404,6 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
|
|||
ownerName := ctx.Params(":owner")
|
||||
repoName := ctx.Params(":repo")
|
||||
|
||||
fmt.Println(opts)
|
||||
|
||||
var repo *models.Repository
|
||||
updates := make([]*repo_module.PushUpdateOptions, 0, len(opts.OldCommitIDs))
|
||||
wasEmpty := false
|
||||
|
@ -557,42 +554,6 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
|
|||
URL: fmt.Sprintf("%s/compare/%s...%s", baseRepo.HTMLURL(), util.PathEscapeSegments(baseRepo.DefaultBranch), util.PathEscapeSegments(branch)),
|
||||
})
|
||||
} else {
|
||||
startCommitSha := opts.OldCommitIDs[i]
|
||||
headCommitSha := opts.NewCommitIDs[i]
|
||||
baseCommitSha := pr.MergeBase
|
||||
|
||||
baseGitRepo, err := git.OpenRepository(baseRepo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error("Failed to get Git Repository of Forked repository: %-v Error: %v", repo, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
|
||||
Err: fmt.Sprintf("Failed to get Git Repository of Forked repository: %-v Error: %v", repo, err),
|
||||
})
|
||||
return
|
||||
}
|
||||
diffs, err := gitdiff.GetDiffRange(baseGitRepo, baseCommitSha, headCommitSha, setting.Git.MaxGitDiffFiles, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles)
|
||||
if err != nil {
|
||||
log.Error("Failed to get diffs of repository: %-v Error: %v", baseRepo, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
|
||||
Err: fmt.Sprintf("Failed to get diffs of repository: %-v Error: %v", baseRepo, err),
|
||||
})
|
||||
return
|
||||
}
|
||||
compareInfo, err := baseGitRepo.GetCompareInfo(baseRepo.RepoPath(),
|
||||
git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName())
|
||||
if err != nil {
|
||||
log.Error("Failed to get compareinfo of repository: %-v Error: %v", baseRepo, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
|
||||
Err: fmt.Sprintf("Failed to get compareinfo of repository: %-v Error: %v", baseRepo, err),
|
||||
})
|
||||
return
|
||||
}
|
||||
if err := models.NewPullRequestVersion(repo, pr, diffs.TotalAddition, compareInfo.Commits.Len(), diffs.TotalDeletion, compareInfo.NumFiles, headCommitSha, baseCommitSha, startCommitSha); err != nil {
|
||||
log.Error("Failed to create pulls version of repository: %-v Error: %v", baseRepo, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
|
||||
Err: fmt.Sprintf("Failed to create pull version of repository: %-v Error: %v", baseRepo, err),
|
||||
})
|
||||
return
|
||||
}
|
||||
results = append(results, private.HookPostReceiveBranchResult{
|
||||
Message: setting.Git.PullRequestPushMessage && repo.AllowsPulls(),
|
||||
Create: false,
|
||||
|
|
|
@ -19,8 +19,10 @@ import (
|
|||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/queue"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/services/gitdiff"
|
||||
)
|
||||
|
||||
// prQueue represents a queue to handle update pull request tests
|
||||
|
@ -234,6 +236,49 @@ func handle(data ...queue.Data) {
|
|||
}
|
||||
continue
|
||||
}
|
||||
|
||||
// 创建pr版本
|
||||
lastPrv, err := models.GetPullRequestLastVersionByPullRequest(pr)
|
||||
if err != nil {
|
||||
log.Error("get pull_request last version error: %v", err)
|
||||
continue
|
||||
}
|
||||
err = pr.LoadIssue()
|
||||
if err != nil {
|
||||
log.Error("pullrequest load issue error: %v", err)
|
||||
continue
|
||||
}
|
||||
pull := pr.Issue
|
||||
pull.PullRequest = pr
|
||||
baseGitRepo, err := git.OpenRepository(pr.BaseRepo.RepoPath())
|
||||
if err != nil {
|
||||
log.Error("git.OpenRepository err:%v", err)
|
||||
continue
|
||||
}
|
||||
defer baseGitRepo.Close()
|
||||
compareInfo, err := baseGitRepo.GetCompareInfo(pr.BaseRepo.RepoPath(),
|
||||
git.BranchPrefix+pr.BaseBranch, pr.GetGitRefName())
|
||||
|
||||
if err != nil {
|
||||
log.Error("baseGitRepo.GetCompareInfo err: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
diffs, err := gitdiff.GetDiffRange(baseGitRepo, compareInfo.BaseCommitID, compareInfo.HeadCommitID, setting.Git.MaxGitDiffFiles, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles)
|
||||
if err != nil {
|
||||
log.Error("gitdiff.GetDiffRange err: %v", err)
|
||||
continue
|
||||
}
|
||||
err = pull.LoadRepo()
|
||||
if err != nil {
|
||||
log.Error("pull.loadRepo err: %v", err)
|
||||
continue
|
||||
}
|
||||
err = models.NewPullRequestVersion(pull.Repo, pr, diffs.TotalAddition, compareInfo.Commits.Len(), diffs.TotalDeletion, compareInfo.NumFiles, compareInfo.HeadCommitID, compareInfo.BaseCommitID, lastPrv.HeadCommitID)
|
||||
if err != nil {
|
||||
log.Error("models.NewPullRequestVersion err: %v", err)
|
||||
continue
|
||||
}
|
||||
checkAndUpdateStatus(pr)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue