Merge remote-tracking branch 'origin/master'

This commit is contained in:
Naoki Takezoe
2018-04-29 11:34:45 +09:00
4 changed files with 56 additions and 10 deletions

View File

@@ -700,11 +700,12 @@ trait IssuesService {
def closeIssuesFromMessage(message: String, userName: String, owner: String, repository: String)(
implicit s: Session
): Unit = {
extractCloseId(message).foreach { issueId =>
for (issue <- getIssue(owner, repository, issueId) if !issue.closed) {
): Seq[Int] = {
extractCloseId(message).flatMap { issueId =>
for (issue <- getIssue(owner, repository, issueId) if !issue.closed) yield {
createComment(owner, repository, userName, issue.issueId, "Close", "close")
updateClosed(owner, repository, issue.issueId, true)
issue.issueId
}
}
}

View File

@@ -116,6 +116,24 @@ trait PullRequestService { self: IssuesService with CommitsService =>
.map { case (t1, t2) => t1 }
.list
def getPullRequestsByBranch(userName: String, repositoryName: String, branch: String, closed: Option[Boolean])(
implicit s: Session
): List[PullRequest] =
PullRequests
.join(Issues)
.on { (t1, t2) =>
t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId)
}
.filter {
case (t1, t2) =>
(t1.requestUserName === userName.bind) &&
(t1.requestRepositoryName === repositoryName.bind) &&
(t1.branch === branch.bind) &&
(t2.closed === closed.get.bind, closed.isDefined)
}
.map { case (t1, t2) => t1 }
.list
/**
* for repository viewer.
* 1. find pull request from `branch` to other branch on same repository
@@ -358,6 +376,14 @@ trait PullRequestService { self: IssuesService with CommitsService =>
.sortWith(_.registeredDate before _.registeredDate)
}
def markMergeAndClosePullRequest(userName: String, owner: String, repository: String, pull: PullRequest)(
implicit s: Session
): Unit = {
createComment(owner, repository, userName, pull.issueId, "Merged by user", "merge")
createComment(owner, repository, userName, pull.issueId, "Close", "close")
updateClosed(owner, repository, pull.issueId, true)
}
}
object PullRequestService {

View File

@@ -296,13 +296,32 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
createIssueComment(owner, repository, commit)
// close issues
if (refName(1) == "heads" && branchName == defaultBranch && command.getType == ReceiveCommand.Type.UPDATE) {
closeIssuesFromMessage(commit.fullMessage, pusher, owner, repository)
getAccountByUserName(pusher).map { pusherAccount =>
closeIssuesFromMessage(commit.fullMessage, pusher, owner, repository).foreach { issueId =>
getIssue(owner, repository, issueId.toString).map { issue =>
callIssuesWebHook("closed", repositoryInfo, issue, baseUrl, pusherAccount)
}
}
}
}
}
Some(commit)
} else None
}
// set PR as merged
val pulls = getPullRequestsByBranch(owner, repository, branchName, Some(false))
pulls.foreach { pull =>
if (commits.find { c =>
c.id == pull.commitIdTo
}.isDefined) {
markMergeAndClosePullRequest(pusher, owner, repository, pull)
getAccountByUserName(pusher).map { pusherAccount =>
callPullRequestWebHook("closed", repositoryInfo, pull.issueId, baseUrl, pusherAccount)
}
}
}
// record activity
if (refName(1) == "heads") {
command.getType match {

View File

@@ -44,8 +44,8 @@
<span class="muted">
@helpers.user(comment.commentedUserName, styleClass = "username strong")
merged @commits.size @helpers.plural(commits.size, "commit")
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName
:@pullreq.requestBranch</code>
into <code>@pullreq.userName:@pullreq.branch</code>
from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
@gitbucket.core.helper.html.datetimeago(comment.registeredDate)
</span>
}.getOrElse {
@@ -53,8 +53,8 @@
<span class="muted">
@helpers.user(issue.openedUserName, styleClass = "username strong")
wants to merge @commits.size @helpers.plural(commits.size, "commit")
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName
:@pullreq.requestBranch</code>
into <code>@pullreq.userName:@pullreq.branch</code>
from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
</span>
}
} else {
@@ -62,8 +62,8 @@
<span class="muted">
@helpers.user(issue.openedUserName, styleClass = "username strong")
wants to merge @commits.size @helpers.plural(commits.size, "commit")
into <code>@pullreq.userName:@pullreq.branch</code> from <code>@pullreq.requestUserName
:@pullreq.requestBranch</code>
into <code>@pullreq.userName:@pullreq.branch</code>
from <code>@pullreq.requestUserName:@pullreq.requestBranch</code>
</span>
}
</div>