mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +01:00
(refs #324)Update commitIdFrom when pullrequest branch is updated
This commit is contained in:
@@ -260,7 +260,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
val originBranch = JGitUtil.getDefaultBranch(oldGit, originRepository, tmpOriginBranch).get._2
|
val originBranch = JGitUtil.getDefaultBranch(oldGit, originRepository, tmpOriginBranch).get._2
|
||||||
val forkedBranch = JGitUtil.getDefaultBranch(newGit, forkedRepository, tmpForkedBranch).get._2
|
val forkedBranch = JGitUtil.getDefaultBranch(newGit, forkedRepository, tmpForkedBranch).get._2
|
||||||
|
|
||||||
val forkedId = getForkedCommitId(oldGit, newGit,
|
val forkedId = JGitUtil.getForkedCommitId(oldGit, newGit,
|
||||||
originRepository.owner, originRepository.name, originBranch,
|
originRepository.owner, originRepository.name, originBranch,
|
||||||
forkedRepository.owner, forkedRepository.name, forkedBranch)
|
forkedRepository.owner, forkedRepository.name, forkedBranch)
|
||||||
|
|
||||||
@@ -432,17 +432,6 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
(defaultOwner, value)
|
(defaultOwner, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the identifier of the root commit (or latest merge commit) of the specified branch.
|
|
||||||
*/
|
|
||||||
private def getForkedCommitId(oldGit: Git, newGit: Git, userName: String, repositoryName: String, branch: String,
|
|
||||||
requestUserName: String, requestRepositoryName: String, requestBranch: String): String =
|
|
||||||
defining(JGitUtil.getAllCommitIds(oldGit)){ existIds =>
|
|
||||||
JGitUtil.getCommitLogs(newGit, requestBranch, true) { commit =>
|
|
||||||
existIds.contains(commit.name) && JGitUtil.getBranchesOfCommit(oldGit, commit.getName).contains(branch)
|
|
||||||
}.head.id
|
|
||||||
}
|
|
||||||
|
|
||||||
private def getRequestCompareInfo(userName: String, repositoryName: String, branch: String,
|
private def getRequestCompareInfo(userName: String, repositoryName: String, branch: String,
|
||||||
requestUserName: String, requestRepositoryName: String, requestCommitId: String): (Seq[Seq[CommitInfo]], Seq[DiffInfo]) =
|
requestUserName: String, requestRepositoryName: String, requestCommitId: String): (Seq[Seq[CommitInfo]], Seq[DiffInfo]) =
|
||||||
using(
|
using(
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ trait PullRequestService { self: IssuesService =>
|
|||||||
def updateCommitIdTo(owner: String, repository: String, issueId: Int, commitIdTo: String): Unit =
|
def updateCommitIdTo(owner: String, repository: String, issueId: Int, commitIdTo: String): Unit =
|
||||||
Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId)).map(_.commitIdTo).update(commitIdTo)
|
Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId)).map(_.commitIdTo).update(commitIdTo)
|
||||||
|
|
||||||
|
def updateCommitIdFrom(owner: String, repository: String, issueId: Int, commitIdFrom: String): Unit =
|
||||||
|
Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId)).map(_.commitIdFrom).update(commitIdFrom)
|
||||||
|
|
||||||
def getPullRequestCountGroupByUser(closed: Boolean, owner: String, repository: Option[String]): List[PullRequestCount] =
|
def getPullRequestCountGroupByUser(closed: Boolean, owner: String, repository: Option[String]): List[PullRequestCount] =
|
||||||
Query(PullRequests)
|
Query(PullRequests)
|
||||||
.innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
|
.innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
|
||||||
|
|||||||
@@ -218,14 +218,21 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
|
|||||||
private def updatePullRequests(branch: String) =
|
private def updatePullRequests(branch: String) =
|
||||||
getPullRequestsByRequest(owner, repository, branch, false).foreach { pullreq =>
|
getPullRequestsByRequest(owner, repository, branch, false).foreach { pullreq =>
|
||||||
if(getRepository(pullreq.userName, pullreq.repositoryName, baseUrl).isDefined){
|
if(getRepository(pullreq.userName, pullreq.repositoryName, baseUrl).isDefined){
|
||||||
using(Git.open(Directory.getRepositoryDir(pullreq.userName, pullreq.repositoryName))){ git =>
|
using(Git.open(Directory.getRepositoryDir(pullreq.userName, pullreq.repositoryName)),
|
||||||
git.fetch
|
Git.open(Directory.getRepositoryDir(pullreq.requestUserName, pullreq.requestRepositoryName))){ (oldGit, newGit) =>
|
||||||
|
oldGit.fetch
|
||||||
.setRemote(Directory.getRepositoryDir(owner, repository).toURI.toString)
|
.setRemote(Directory.getRepositoryDir(owner, repository).toURI.toString)
|
||||||
.setRefSpecs(new RefSpec(s"refs/heads/${branch}:refs/pull/${pullreq.issueId}/head").setForceUpdate(true))
|
.setRefSpecs(new RefSpec(s"refs/heads/${branch}:refs/pull/${pullreq.issueId}/head").setForceUpdate(true))
|
||||||
.call
|
.call
|
||||||
|
|
||||||
val commitIdTo = git.getRepository.resolve(s"refs/pull/${pullreq.issueId}/head").getName
|
val commitIdTo = oldGit.getRepository.resolve(s"refs/pull/${pullreq.issueId}/head").getName
|
||||||
updateCommitIdTo(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdTo)
|
updateCommitIdTo(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdTo)
|
||||||
|
|
||||||
|
val commitIdFrom = JGitUtil.getForkedCommitId(oldGit, newGit,
|
||||||
|
pullreq.userName, pullreq.repositoryName, pullreq.branch,
|
||||||
|
pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.requestBranch)
|
||||||
|
// TODO(tanacasino): commitIdFrom and commitIdTo should be updated by one query...
|
||||||
|
updateCommitIdFrom(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdFrom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -617,5 +617,16 @@ object JGitUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the identifier of the root commit (or latest merge commit) of the specified branch.
|
||||||
|
*/
|
||||||
|
def getForkedCommitId(oldGit: Git, newGit: Git,
|
||||||
|
userName: String, repositoryName: String, branch: String,
|
||||||
|
requestUserName: String, requestRepositoryName: String, requestBranch: String): String =
|
||||||
|
defining(getAllCommitIds(oldGit)){ existIds =>
|
||||||
|
getCommitLogs(newGit, requestBranch, true) { commit =>
|
||||||
|
existIds.contains(commit.name) && getBranchesOfCommit(oldGit, commit.getName).contains(branch)
|
||||||
|
}.head.id
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user