Browse Source

add new status: checking

Unknwon 9 years ago
parent
commit
4dc6285715
4 changed files with 19 additions and 7 deletions
  1. 1 1
      gogs.go
  2. 16 4
      models/issue.go
  3. 1 1
      routers/repo/pull.go
  4. 1 1
      templates/.VERSION

+ 1 - 1
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())

+ 16 - 4
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)
 		}

+ 1 - 1
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
 	}

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.6.16.1017 Beta
+0.6.16.1018 Beta