diff --git a/src/main/scala/gitbucket/core/plugin/CommitHook.scala b/src/main/scala/gitbucket/core/plugin/CommitHook.scala index bf01e35..a7af9b8 100644 --- a/src/main/scala/gitbucket/core/plugin/CommitHook.scala +++ b/src/main/scala/gitbucket/core/plugin/CommitHook.scala @@ -1,12 +1,15 @@ package gitbucket.core.plugin import gitbucket.core.model.Profile._ -import org.eclipse.jgit.transport.ReceiveCommand +import org.eclipse.jgit.transport.{ReceivePack, ReceiveCommand} import profile.simple._ trait CommitHook { - def hook(owner: String, repository: String, isAllowNonFastForwards: Boolean, command: ReceiveCommand, pusher: String) - (implicit session: Session): Option[String] + def preCommit(owner: String, repository: String, receivePack: ReceivePack, command: ReceiveCommand, pusher: String) + (implicit session: Session): Option[String] = None + + def postCommit(owner: String, repository: String, receivePack: ReceivePack, command: ReceiveCommand, pusher: String) + (implicit session: Session): Unit = () } diff --git a/src/main/scala/gitbucket/core/service/ProtectedBranchService.scala b/src/main/scala/gitbucket/core/service/ProtectedBranchService.scala index 618106f..e80347b 100644 --- a/src/main/scala/gitbucket/core/service/ProtectedBranchService.scala +++ b/src/main/scala/gitbucket/core/service/ProtectedBranchService.scala @@ -5,7 +5,7 @@ import gitbucket.core.plugin.CommitHook import profile.simple._ -import org.eclipse.jgit.transport.ReceiveCommand +import org.eclipse.jgit.transport.{ReceivePack, ReceiveCommand} trait ProtectedBranchService { @@ -46,11 +46,11 @@ object ProtectedBranchService { class ProtectedBranchCommitHook extends CommitHook with ProtectedBranchService { - override def hook(owner: String, repository: String, isAllowNonFastForwards: Boolean, command: ReceiveCommand, pusher: String) + override def preCommit(owner: String, repository: String, receivePack: ReceivePack, command: ReceiveCommand, pusher: String) (implicit session: Session): Option[String] = { val branch = command.getRefName.stripPrefix("refs/heads/") if(branch != command.getRefName){ - getProtectedBranchInfo(owner, repository, branch).getStopReason(isAllowNonFastForwards, command, pusher) + getProtectedBranchInfo(owner, repository, branch).getStopReason(receivePack.isAllowNonFastForwards, command, pusher) } else { None } diff --git a/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala b/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala index 045aef1..fdab116 100644 --- a/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala +++ b/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala @@ -119,8 +119,9 @@ def onPreReceive(receivePack: ReceivePack, commands: java.util.Collection[ReceiveCommand]): Unit = { try { commands.asScala.foreach { command => + // call pre-commit hook PluginRegistry().getCommitHooks - .flatMap(_.hook(owner, repository, receivePack.isAllowNonFastForwards, command, pusher)) + .flatMap(_.preCommit(owner, repository, receivePack, command, pusher)) .headOption.foreach { error => command.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, error) } @@ -214,6 +215,9 @@ newId = command.getNewId(), oldId = command.getOldId()) } } + + // call post-commit hook + PluginRegistry().getCommitHooks.foreach(_.postCommit(owner, repository, receivePack, command, pusher)) } } // update repository last modified time.