aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2016-12-22 01:28:06 -0500
committerUnknwon <u@gogs.io>2016-12-22 01:28:06 -0500
commitd04b19545db513c31d86d503046f51ba780e4038 (patch)
treef0948450c9afeb6e41d9eb1e2b5bff5cf0e3c9dc
parent3b0e2c1c3fd1b20d5afc3344aefb8af1b1dcb5b4 (diff)
Code fix for PR #3547
-rw-r--r--README.md2
-rw-r--r--gogs.go2
-rw-r--r--models/pull.go74
-rw-r--r--routers/repo/pull.go10
-rw-r--r--templates/.VERSION2
5 files changed, 33 insertions, 57 deletions
diff --git a/README.md b/README.md
index 00d9a07b..03a163d0 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)
-##### Current tip version: 0.9.105 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions ~~or submit a task on [alpha stage automated binary building system](https://build.gogs.io/)~~)
+##### Current tip version: 0.9.106 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions ~~or submit a task on [alpha stage automated binary building system](https://build.gogs.io/)~~)
| Web | UI | Preview |
|:-------------:|:-------:|:-------:|
diff --git a/gogs.go b/gogs.go
index f72fefe3..d321ba67 100644
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)
-const APP_VER = "0.9.105.1221"
+const APP_VER = "0.9.106.1222"
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
diff --git a/models/pull.go b/models/pull.go
index 4bfc8ddf..cb52a302 100644
--- a/models/pull.go
+++ b/models/pull.go
@@ -85,6 +85,20 @@ func (pr *PullRequest) AfterSet(colName string, _ xorm.Cell) {
// Note: don't try to get Issue because will end up recursive querying.
func (pr *PullRequest) loadAttributes(e Engine) (err error) {
+ if pr.HeadRepo == nil {
+ pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID)
+ if err != nil && !IsErrRepoNotExist(err) {
+ return fmt.Errorf("getRepositoryByID.(HeadRepo) [%d]: %v", pr.HeadRepoID, err)
+ }
+ }
+
+ if pr.BaseRepo == nil {
+ pr.BaseRepo, err = getRepositoryByID(e, pr.BaseRepoID)
+ if err != nil {
+ return fmt.Errorf("getRepositoryByID.(BaseRepo) [%d]: %v", pr.BaseRepoID, err)
+ }
+ }
+
if pr.HasMerged && pr.Merger == nil {
pr.Merger, err = getUserByID(e, pr.MergerID)
if IsErrUserNotExist(err) {
@@ -112,11 +126,19 @@ func (pr *PullRequest) LoadIssue() (err error) {
}
// This method assumes following fields have been assigned with valid values:
-// Required - Issue
-// Required - HeadRepo
-// Required - BaseRepo
-// Optional - Merger
+// Required - Issue, BaseRepo
+// Optional - HeadRepo, Merger
func (pr *PullRequest) APIFormat() *api.PullRequest {
+ // In case of head repo has been deleted.
+ var apiHeadRepo *api.Repository
+ if pr.HeadRepo == nil {
+ apiHeadRepo = &api.Repository{
+ Name: "deleted",
+ }
+ } else {
+ apiHeadRepo = pr.HeadRepo.APIFormat(nil)
+ }
+
apiIssue := pr.Issue.APIFormat()
apiPullRequest := &api.PullRequest{
ID: pr.ID,
@@ -130,7 +152,7 @@ func (pr *PullRequest) APIFormat() *api.PullRequest {
State: apiIssue.State,
Comments: apiIssue.Comments,
HeadBranch: pr.HeadBranch,
- HeadRepo: pr.HeadRepo.APIFormat(nil),
+ HeadRepo: apiHeadRepo,
BaseBranch: pr.BaseBranch,
BaseRepo: pr.BaseRepo.APIFormat(nil),
HTMLURL: pr.Issue.HTMLURL(),
@@ -150,30 +172,6 @@ func (pr *PullRequest) APIFormat() *api.PullRequest {
return apiPullRequest
}
-func (pr *PullRequest) getHeadRepo(e Engine) (err error) {
- pr.HeadRepo, err = getRepositoryByID(e, pr.HeadRepoID)
- if err != nil && !IsErrRepoNotExist(err) {
- return fmt.Errorf("getRepositoryByID(head): %v", err)
- }
- return nil
-}
-
-func (pr *PullRequest) GetHeadRepo() error {
- return pr.getHeadRepo(x)
-}
-
-func (pr *PullRequest) GetBaseRepo() (err error) {
- if pr.BaseRepo != nil {
- return nil
- }
-
- pr.BaseRepo, err = GetRepositoryByID(pr.BaseRepoID)
- if err != nil {
- return fmt.Errorf("GetRepositoryByID(base): %v", err)
- }
- return nil
-}
-
// IsChecking returns true if this pull request is still checking conflict.
func (pr *PullRequest) IsChecking() bool {
return pr.Status == PULL_REQUEST_STATUS_CHECKING
@@ -187,12 +185,6 @@ func (pr *PullRequest) CanAutoMerge() bool {
// Merge merges pull request to base repository.
// FIXME: add repoWorkingPull make sure two merges does not happen at same time.
func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error) {
- if err = pr.GetHeadRepo(); err != nil {
- return fmt.Errorf("GetHeadRepo: %v", err)
- } else if err = pr.GetBaseRepo(); err != nil {
- return fmt.Errorf("GetBaseRepo: %v", err)
- }
-
defer func() {
go HookQueue.Add(pr.BaseRepo.ID)
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false)
@@ -548,17 +540,11 @@ func (pr *PullRequest) UpdateCols(cols ...string) error {
// UpdatePatch generates and saves a new patch.
func (pr *PullRequest) UpdatePatch() (err error) {
- if err = pr.GetHeadRepo(); err != nil {
- return fmt.Errorf("GetHeadRepo: %v", err)
- } else if pr.HeadRepo == nil {
+ if pr.HeadRepo == nil {
log.Trace("PullRequest[%d].UpdatePatch: ignored cruppted data", pr.ID)
return nil
}
- if err = pr.GetBaseRepo(); err != nil {
- return fmt.Errorf("GetBaseRepo: %v", err)
- }
-
headGitRepo, err := git.OpenRepository(pr.HeadRepo.RepoPath())
if err != nil {
return fmt.Errorf("OpenRepository: %v", err)
@@ -763,8 +749,8 @@ func TestPullRequests() {
func(idx int, bean interface{}) error {
pr := bean.(*PullRequest)
- if err := pr.GetBaseRepo(); err != nil {
- log.Error(3, "GetBaseRepo: %v", err)
+ if err := pr.LoadAttributes(); err != nil {
+ log.Error(3, "LoadAttributes: %v", err)
return nil
}
diff --git a/routers/repo/pull.go b/routers/repo/pull.go
index d5d9bc9b..4f0ef1ed 100644
--- a/routers/repo/pull.go
+++ b/routers/repo/pull.go
@@ -156,11 +156,6 @@ func checkPullInfo(ctx *context.Context) *models.Issue {
return nil
}
- if err = issue.PullRequest.GetHeadRepo(); err != nil {
- ctx.Handle(500, "GetHeadRepo", err)
- return nil
- }
-
if ctx.IsSigned {
// Update issue-user.
if err = issue.ReadBy(ctx.User.ID); err != nil {
@@ -203,11 +198,6 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.PullReq
err error
)
- if err = pull.GetHeadRepo(); err != nil {
- ctx.Handle(500, "GetHeadRepo", err)
- return nil
- }
-
if pull.HeadRepo != nil {
headGitRepo, err = git.OpenRepository(pull.HeadRepo.RepoPath())
if err != nil {
diff --git a/templates/.VERSION b/templates/.VERSION
index 20345fe4..e059484b 100644
--- a/templates/.VERSION
+++ b/templates/.VERSION
@@ -1 +1 @@
-0.9.105.1221 \ No newline at end of file
+0.9.106.1222 \ No newline at end of file