From 4dc6285715ccd1e90cb4e437a3c2b1d0b13d47cb Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 18 Oct 2015 17:18:45 -0400 Subject: [PATCH] add new status: checking --- gogs.go | 2 +- models/issue.go | 20 ++++++++++++++++---- routers/repo/pull.go | 2 +- templates/.VERSION | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/gogs.go b/gogs.go index a7d44a2aa6..8abca9f50e 100644 --- a/gogs.go +++ b/gogs.go @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.6.16.1017 Beta" +const APP_VER = "0.6.16.1018 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/issue.go b/models/issue.go index 0dd0b66370..5357cbf7b9 100644 --- a/models/issue.go +++ b/models/issue.go @@ -904,10 +904,18 @@ func UpdateIssueUsersByMentions(uids []int64, iid int64) error { type PullRequestType int const ( - PULL_REQUEST_GOGS = iota + PULL_REQUEST_GOGS PullRequestType = iota PLLL_ERQUEST_GIT ) +type PullRequestStatus int + +const ( + PULL_REQUEST_STATUS_CONFLICT PullRequestStatus = iota + PULL_REQUEST_STATUS_CHECKING + PULL_REQUEST_STATUS_MERGEABLE +) + // PullRequest represents relation between pull request and repositories. type PullRequest struct { ID int64 `xorm:"pk autoincr"` @@ -923,7 +931,7 @@ type PullRequest struct { MergeBase string `xorm:"VARCHAR(40)"` MergedCommitID string `xorm:"VARCHAR(40)"` Type PullRequestType - CanAutoMerge bool + Status PullRequestStatus HasMerged bool Merged time.Time MergerID int64 @@ -963,6 +971,10 @@ func (pr *PullRequest) AfterSet(colName string, _ xorm.Cell) { } } +func (pr *PullRequest) CanAutoMerge() bool { + return pr.Status == PULL_REQUEST_STATUS_MERGEABLE +} + // Merge merges pull request to base repository. func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error) { sess := x.NewSession() @@ -1076,13 +1088,13 @@ func NewPullRequest(repo *Repository, pull *Issue, labelIDs []int64, uuids []str return fmt.Errorf("save patch: %v", err) } - pr.CanAutoMerge = true + pr.Status = PULL_REQUEST_STATUS_MERGEABLE _, stderr, err := process.ExecDir(-1, repo.LocalCopyPath(), fmt.Sprintf("NewPullRequest(git apply --check): %d", repo.ID), "git", "apply", "--check", patchPath) if err != nil { if strings.Contains(stderr, "patch does not apply") { - pr.CanAutoMerge = false + pr.Status = PULL_REQUEST_STATUS_CONFLICT } else { return fmt.Errorf("git apply --check: %v - %s", err, stderr) } diff --git a/routers/repo/pull.go b/routers/repo/pull.go index 40c83351ca..13236a219f 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -374,7 +374,7 @@ func MergePullRequest(ctx *middleware.Context) { return } - if !pr.CanAutoMerge || pr.HasMerged { + if !pr.CanAutoMerge() || pr.HasMerged { ctx.Handle(404, "MergePullRequest", nil) return } diff --git a/templates/.VERSION b/templates/.VERSION index ddb56b4d0b..df1adfbcb7 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.6.16.1017 Beta \ No newline at end of file +0.6.16.1018 Beta \ No newline at end of file