From 76fa5fb474e2c2f2aacd536366d79a64bac61ea4 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Mon, 12 Feb 2018 02:13:57 +0900 Subject: [PATCH] (refs #1879) Support tag comparing --- .../controller/PullRequestsController.scala | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala index 395b4f946..a4bef94b0 100644 --- a/src/main/scala/gitbucket/core/controller/PullRequestsController.scala +++ b/src/main/scala/gitbucket/core/controller/PullRequestsController.scala @@ -372,16 +372,20 @@ trait PullRequestsControllerBase extends ControllerBase { Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name)) ){ case (oldGit, newGit) => val (oldId, newId) = - if(originRepository.branchList.contains(originId) && forkedRepository.branchList.contains(forkedId)){ - // Branch name - val rootId = JGitUtil.getForkedCommitId(oldGit, newGit, - originRepository.owner, originRepository.name, originId, - forkedRepository.owner, forkedRepository.name, forkedId) + if(originRepository.branchList.contains(originId)){ + val forkedId2 = forkedRepository.tags.collectFirst { case x if x.name == forkedId => x.id }.getOrElse(forkedId) + + val originId2 = JGitUtil.getForkedCommitId(oldGit, newGit, + originRepository.owner, originRepository.name, originId, + forkedRepository.owner, forkedRepository.name, forkedId2) + + (Option(oldGit.getRepository.resolve(originId2)), Option(newGit.getRepository.resolve(forkedId2))) - (Option(oldGit.getRepository.resolve(rootId)), Option(newGit.getRepository.resolve(forkedId))) } else { - // Commit id - (Option(oldGit.getRepository.resolve(originId)), Option(newGit.getRepository.resolve(forkedId))) + val originId2 = originRepository.tags.collectFirst { case x if x.name == originId => x.id }.getOrElse(originId) + val forkedId2 = forkedRepository.tags.collectFirst { case x if x.name == forkedId => x.id }.getOrElse(forkedId) + + (Option(oldGit.getRepository.resolve(originId2)), Option(newGit.getRepository.resolve(forkedId2))) } (oldId, newId) match {