Merge remote-tracking branch 'origin/master'

This commit is contained in:
Konrad 2017-11-06 21:28:52 +01:00
commit 80437f8ce7
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
10 changed files with 117 additions and 125 deletions

View File

@ -470,7 +470,12 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
} }
// Check for dependencies, if there aren't any, close it // Check for dependencies, if there aren't any, close it
if IssueNoDependenciesLeft(issue) { noDeps, err := IssueNoDependenciesLeft(issue)
if err != nil {
return err
}
if noDeps {
if err = issue.ChangeStatus(doer, repo, true); err != nil { if err = issue.ChangeStatus(doer, repo, true); err != nil {
return err return err
} }

View File

@ -52,16 +52,12 @@ func CreateIssueDependency(user *User, issue, dep *Issue) (exists bool, err erro
} }
// Add comment referencing the new dependency // Add comment referencing the new dependency
_, err = createIssueDependencyComment(sess, user, issue, dep, true) if _, err = createIssueDependencyComment(sess, user, issue, dep, true); err != nil {
if err != nil {
return exists, err return exists, err
} }
// Create a new comment for the dependent issue // Create a new comment for the dependent issue
_, err = createIssueDependencyComment(sess, user, dep, issue, true) if _, err = createIssueDependencyComment(sess, user, dep, issue, true); err != nil {
if err != nil {
return exists, err return exists, err
} }
} }
@ -73,8 +69,8 @@ func RemoveIssueDependency(user *User, issue *Issue, dep *Issue, depType Depende
sess := x.NewSession() sess := x.NewSession()
// Check if it exists // Check if it exists
exists, err := issueDepExists(x, issue.ID, dep.ID) var exists bool
if err != nil { if exists, err = issueDepExists(x, issue.ID, dep.ID); err != nil {
return err return err
} }
@ -92,22 +88,17 @@ func RemoveIssueDependency(user *User, issue *Issue, dep *Issue, depType Depende
return return
} }
_, err := x.Delete(&issueDepToDelete) if _, err := x.Delete(&issueDepToDelete); err != nil {
if err != nil {
return err return err
} }
// Add comment referencing the removed dependency // Add comment referencing the removed dependency
_, err = createIssueDependencyComment(sess, user, issue, dep, false) if _, err = createIssueDependencyComment(sess, user, issue, dep, false); err != nil {
if err != nil {
return err return err
} }
// Create a new comment for the dependent issue // Create a new comment for the dependent issue
_, err = createIssueDependencyComment(sess, user, dep, issue, false) if _, err = createIssueDependencyComment(sess, user, dep, issue, false); err != nil {
if err != nil {
return err return err
} }
} }
@ -119,11 +110,7 @@ func issueDepExists(e Engine, issueID int64, depID int64) (exists bool, err erro
exists, err = e.Where("(issue_id = ? AND dependency_id = ?) OR (issue_id = ? AND dependency_id = ?)", issueID, depID, depID, issueID).Exist(&IssueDependency{}) exists, err = e.Where("(issue_id = ? AND dependency_id = ?) OR (issue_id = ? AND dependency_id = ?)", issueID, depID, depID, issueID).Exist(&IssueDependency{})
if err != nil { return
return exists, err
}
return exists, nil
} }
// IssueDependencyIssue custom type for mysql join // IssueDependencyIssue custom type for mysql join
@ -138,7 +125,7 @@ func (IssueDependencyIssue) TableName() string {
} }
// IssueNoDependenciesLeft checks if issue can be closed // IssueNoDependenciesLeft checks if issue can be closed
func IssueNoDependenciesLeft(issue *Issue) bool { func IssueNoDependenciesLeft(issue *Issue) (bool, error) {
exists, err := x. exists, err := x.
Join("INNER", "issue", "issue.id = issue_dependency.dependency_id"). Join("INNER", "issue", "issue.id = issue_dependency.dependency_id").
@ -146,9 +133,5 @@ func IssueNoDependenciesLeft(issue *Issue) bool {
And("issue.is_closed = ?", "0"). And("issue.is_closed = ?", "0").
Exist(&IssueDependencyIssue{}) Exist(&IssueDependencyIssue{})
if err != nil { return !exists, err
return false
}
return !exists
} }

View File

@ -24,9 +24,7 @@ func addIssueDependencyTables(x *xorm.Engine) (err error) {
UpdatedUnix int64 `xorm:"updated"` UpdatedUnix int64 `xorm:"updated"`
} }
err = x.Sync(new(IssueDependency)) if err = x.Sync(new(IssueDependency)); err != nil {
if err != nil {
return fmt.Errorf("Error creating issue_dependency_table column definition: %v", err) return fmt.Errorf("Error creating issue_dependency_table column definition: %v", err)
} }

View File

@ -117,6 +117,7 @@ func init() {
new(TrackedTime), new(TrackedTime),
new(DeletedBranch), new(DeletedBranch),
new(RepoIndexerStatus), new(RepoIndexerStatus),
new(IssueDependency),
) )
gonicNames := []string{"SSL", "UID"} gonicNames := []string{"SSL", "UID"}

View File

@ -2457,8 +2457,7 @@ func (repo *Repository) GetUserFork(userID int64) (*Repository, error) {
func (repo *Repository) getBlockedByDependencies(e Engine, issueID int64) (_ []*IssueDependencyIssue, err error) { func (repo *Repository) getBlockedByDependencies(e Engine, issueID int64) (_ []*IssueDependencyIssue, err error) {
var issueDeps []*IssueDependencyIssue var issueDeps []*IssueDependencyIssue
err = x.Join("INNER", "issue", "issue.id = issue_dependency.dependency_id").Where("issue_id = ?", issueID).Find(&issueDeps) if err = x.Join("INNER", "issue", "issue.id = issue_dependency.dependency_id").Where("issue_id = ?", issueID).Find(&issueDeps); err != nil {
if err != nil {
return issueDeps, err return issueDeps, err
} }
@ -2466,11 +2465,10 @@ func (repo *Repository) getBlockedByDependencies(e Engine, issueID int64) (_ []*
} }
// Get Blocking Dependencies, aka all issues this issue blocks. // Get Blocking Dependencies, aka all issues this issue blocks.
func (repo *Repository) getBlockingDependencies(e Engine, issueID int64) (_ []*IssueDependencyIssue, err error) { func (repo *Repository) getBlockingDependencies(e Engine, issueID int64) ([]*IssueDependencyIssue, error) {
var issueDeps []*IssueDependencyIssue var issueDeps []*IssueDependencyIssue
err = x.Join("INNER", "issue", "issue.id = issue_dependency.issue_id").Where("dependency_id = ?", issueID).Find(&issueDeps) if err := x.Join("INNER", "issue", "issue.id = issue_dependency.issue_id").Where("dependency_id = ?", issueID).Find(&issueDeps); err != nil {
if err != nil {
return issueDeps, err return issueDeps, err
} }

View File

@ -937,7 +937,12 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) {
!(issue.IsPull && issue.PullRequest.HasMerged) { !(issue.IsPull && issue.PullRequest.HasMerged) {
// Check for open dependencies // Check for open dependencies
if form.Status == "close" && !models.IssueNoDependenciesLeft(issue) { noDeps, err := models.IssueNoDependenciesLeft(issue)
if err != nil {
return
}
if form.Status == "close" && !noDeps {
if issue.IsPull { if issue.IsPull {
ctx.Flash.Error("You need to close all issues blocking this pull request before you can merge it!") ctx.Flash.Error("You need to close all issues blocking this pull request before you can merge it!")
ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index)) ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index))

View File

@ -16,8 +16,6 @@ import (
// AddDependency adds new dependencies // AddDependency adds new dependencies
func AddDependency(c *context.Context) { func AddDependency(c *context.Context) {
// TODO: should should an issue only have dependencies in it's own repo?
depID, err := strconv.ParseInt(c.Req.PostForm.Get("newDependency"), 10, 64) depID, err := strconv.ParseInt(c.Req.PostForm.Get("newDependency"), 10, 64)
if err != nil { if err != nil {
c.Handle(http.StatusBadRequest, "issue ID is not int", err) c.Handle(http.StatusBadRequest, "issue ID is not int", err)

View File

@ -50,8 +50,7 @@ func RemoveDependency(c *context.Context) {
return return
} }
err = models.RemoveIssueDependency(c.User, issue, dep, depType) if err = models.RemoveIssueDependency(c.User, issue, dep, depType); err != nil {
if err != nil {
c.Handle(http.StatusInternalServerError, "CreateOrUpdateIssueDependency", err) c.Handle(http.StatusInternalServerError, "CreateOrUpdateIssueDependency", err)
return return
} }

View File

@ -495,7 +495,12 @@ func MergePullRequest(ctx *context.Context) {
pr.Issue = issue pr.Issue = issue
pr.Issue.Repo = ctx.Repo.Repository pr.Issue.Repo = ctx.Repo.Repository
if !models.IssueNoDependenciesLeft(issue) { noDeps, err := models.IssueNoDependenciesLeft(issue)
if err != nil {
return
}
if !noDeps {
ctx.Flash.Error("You need to close all issues blocking this pull request before you can merge it!") ctx.Flash.Error("You need to close all issues blocking this pull request before you can merge it!")
ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index)) ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
return return

View File

@ -279,7 +279,7 @@
</div> </div>
<button class="ui green icon button"> <button class="ui green icon button">
<i class="plus icon"></i> <i class="plus icon"></i>
</button><!-- {{.i18n.Tr "repo.issues.dependency.add"}} --> </button>
</div> </div>
</form> </form>
</div> </div>