Filter proposed branches which have been already raised as pull request
1 parent 70f4084 commit 847f96d537da5714a0f694e7299a99e41052eac5
@Naoki Takezoe Naoki Takezoe authored on 11 Dec 2017
Showing 2 changed files
View
12
src/main/scala/gitbucket/core/controller/PullRequestsController.scala
 
val targetRepository = (for {
parentUserName <- repository.repository.parentUserName
parentRepoName <- repository.repository.parentRepositoryName
parentRepository <- getRepository(parentUserName, parentRepoName).orElse(Some(repository))
parentRepository <- getRepository(parentUserName, parentRepoName)
} yield {
parentRepository
}).getOrElse {
repository
}
 
html.proposals(branches, targetRepository, repository)
val proposedBranches = branches.filter { branch =>
getPullRequestsByRequest(repository.owner, repository.name, branch, None).isEmpty
}
 
html.proposals(proposedBranches, targetRepository, repository)
})
 
/**
* Parses branch identifier and extracts owner and branch name as tuple.
View
6
src/main/scala/gitbucket/core/service/PullRequestService.scala
requestBranch,
commitIdFrom,
commitIdTo)
 
def getPullRequestsByRequest(userName: String, repositoryName: String, branch: String, closed: Boolean)
def getPullRequestsByRequest(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.requestBranch === branch.bind) &&
(t2.closed === closed.bind)
(t2.closed === closed.get.bind, closed.isDefined)
}
.map { case (t1, t2) => t1 }
.list
 
/**
* Fetch pull request contents into refs/pull/${issueId}/head and update pull request table.
*/
def updatePullRequests(owner: String, repository: String, branch: String)(implicit s: Session): Unit =
getPullRequestsByRequest(owner, repository, branch, false).foreach { pullreq =>
getPullRequestsByRequest(owner, repository, branch, Some(false)).foreach { pullreq =>
if(Repositories.filter(_.byRepository(pullreq.userName, pullreq.repositoryName)).exists.run){
// Update the git repository
val (commitIdTo, commitIdFrom) = JGitUtil.updatePullRequest(
pullreq.userName, pullreq.repositoryName, pullreq.branch, pullreq.issueId,