From d04b19545db513c31d86d503046f51ba780e4038 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Thu, 22 Dec 2016 01:28:06 -0500 Subject: [PATCH] Code fix for PR #3547 --- README.md | 2 +- gogs.go | 2 +- models/pull.go | 74 ++++++++++++++++++-------------------------- routers/repo/pull.go | 10 ------ templates/.VERSION | 2 +- 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