diff --git a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala index b35f66c..036fa2d 100644 --- a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala +++ b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala @@ -517,14 +517,18 @@ 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) }) /** diff --git a/src/main/scala/gitbucket/core/service/PullRequestService.scala b/src/main/scala/gitbucket/core/service/PullRequestService.scala index 1ee36f9..0ecf20f 100644 --- a/src/main/scala/gitbucket/core/service/PullRequestService.scala +++ b/src/main/scala/gitbucket/core/service/PullRequestService.scala @@ -79,7 +79,7 @@ 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) } @@ -87,7 +87,7 @@ (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 @@ -118,7 +118,7 @@ * 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(