mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 21:45:50 +01:00
Fix refs commit log and web hook.
This commit is contained in:
@@ -2,7 +2,6 @@ package app
|
|||||||
|
|
||||||
import util._
|
import util._
|
||||||
import service._
|
import service._
|
||||||
import jp.sf.amateras.scalatra.forms._
|
|
||||||
|
|
||||||
class IndexController extends IndexControllerBase
|
class IndexController extends IndexControllerBase
|
||||||
with RepositoryService with SystemSettingsService with ActivityService with AccountService
|
with RepositoryService with SystemSettingsService with ActivityService with AccountService
|
||||||
|
|||||||
@@ -165,17 +165,12 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// call web hook
|
// call web hook
|
||||||
val webHookURLs = getWebHookURLs(owner, name)
|
getWebHookURLs(owner, name) match {
|
||||||
if(webHookURLs.nonEmpty){
|
case webHookURLs if(webHookURLs.nonEmpty) =>
|
||||||
val payload = WebHookPayload(
|
for(ownerAccount <- getAccountByUserName(owner)){
|
||||||
git,
|
callWebHook(owner, name, webHookURLs,
|
||||||
loginAccount,
|
WebHookPayload(git, loginAccount, mergeBaseRefName, repository, commits.flatten.toList, ownerAccount))
|
||||||
mergeBaseRefName,
|
}
|
||||||
repository,
|
|
||||||
commits.flatten.toList,
|
|
||||||
getAccountByUserName(owner).get)
|
|
||||||
|
|
||||||
callWebHook(owner, name, webHookURLs, payload)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// notifications
|
// notifications
|
||||||
@@ -427,7 +422,7 @@ trait PullRequestsControllerBase extends ControllerBase {
|
|||||||
|
|
||||||
val commits = newGit.log.addRange(oldId, newId).call.iterator.asScala.map { revCommit =>
|
val commits = newGit.log.addRange(oldId, newId).call.iterator.asScala.map { revCommit =>
|
||||||
new CommitInfo(revCommit)
|
new CommitInfo(revCommit)
|
||||||
}.toList.splitWith{ (commit1, commit2) =>
|
}.toList.splitWith { (commit1, commit2) =>
|
||||||
view.helpers.date(commit1.time) == view.helpers.date(commit2.time)
|
view.helpers.date(commit1.time) == view.helpers.date(commit2.time)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -138,17 +138,12 @@ trait RepositorySettingsControllerBase extends ControllerBase with FlashMapSuppo
|
|||||||
.setMaxCount(3)
|
.setMaxCount(3)
|
||||||
.call.iterator.asScala.map(new CommitInfo(_))
|
.call.iterator.asScala.map(new CommitInfo(_))
|
||||||
|
|
||||||
val webHookURLs = getWebHookURLs(repository.owner, repository.name)
|
getWebHookURLs(repository.owner, repository.name) match {
|
||||||
if(webHookURLs.nonEmpty){
|
case webHookURLs if(webHookURLs.nonEmpty) =>
|
||||||
val owner = getAccountByUserName(repository.owner).get
|
for(ownerAccount <- getAccountByUserName(repository.owner)){
|
||||||
callWebHook(repository.owner, repository.name, webHookURLs,
|
callWebHook(repository.owner, repository.name, webHookURLs,
|
||||||
WebHookPayload(
|
WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount))
|
||||||
git,
|
}
|
||||||
owner,
|
|
||||||
"refs/heads/" + repository.repository.defaultBranch,
|
|
||||||
repository,
|
|
||||||
commits.toList,
|
|
||||||
owner))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
flash += "info" -> "Test payload deployed!"
|
flash += "info" -> "Test payload deployed!"
|
||||||
|
|||||||
@@ -56,10 +56,10 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest]
|
|||||||
|
|
||||||
override def create(request: HttpServletRequest, db: Repository): ReceivePack = {
|
override def create(request: HttpServletRequest, db: Repository): ReceivePack = {
|
||||||
val receivePack = new ReceivePack(db)
|
val receivePack = new ReceivePack(db)
|
||||||
val userName = request.getAttribute(Keys.Request.UserName).asInstanceOf[String]
|
val pusher = request.getAttribute(Keys.Request.UserName).asInstanceOf[String]
|
||||||
|
|
||||||
logger.debug("requestURI: " + request.getRequestURI)
|
logger.debug("requestURI: " + request.getRequestURI)
|
||||||
logger.debug("userName:" + userName)
|
logger.debug("pusher:" + pusher)
|
||||||
|
|
||||||
defining(request.paths){ paths =>
|
defining(request.paths){ paths =>
|
||||||
val owner = paths(1)
|
val owner = paths(1)
|
||||||
@@ -69,7 +69,7 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest]
|
|||||||
logger.debug("repository:" + owner + "/" + repository)
|
logger.debug("repository:" + owner + "/" + repository)
|
||||||
logger.debug("baseURL:" + baseURL)
|
logger.debug("baseURL:" + baseURL)
|
||||||
|
|
||||||
receivePack.setPostReceiveHook(new CommitLogHook(owner, repository, userName, baseURL))
|
receivePack.setPostReceiveHook(new CommitLogHook(owner, repository, pusher, baseURL))
|
||||||
receivePack
|
receivePack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ class GitBucketReceivePackFactory extends ReceivePackFactory[HttpServletRequest]
|
|||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import scala.collection.JavaConverters._
|
||||||
|
|
||||||
class CommitLogHook(owner: String, repository: String, userName: String, baseURL: String) extends PostReceiveHook
|
class CommitLogHook(owner: String, repository: String, pusher: String, baseURL: String) extends PostReceiveHook
|
||||||
with RepositoryService with AccountService with IssuesService with ActivityService with PullRequestService with WebHookService {
|
with RepositoryService with AccountService with IssuesService with ActivityService with PullRequestService with WebHookService {
|
||||||
|
|
||||||
private val logger = LoggerFactory.getLogger(classOf[CommitLogHook])
|
private val logger = LoggerFactory.getLogger(classOf[CommitLogHook])
|
||||||
@@ -117,15 +117,15 @@ class CommitLogHook(owner: String, repository: String, userName: String, baseURL
|
|||||||
// record activity
|
// record activity
|
||||||
if(refName(1) == "heads"){
|
if(refName(1) == "heads"){
|
||||||
command.getType match {
|
command.getType match {
|
||||||
case ReceiveCommand.Type.CREATE => recordCreateBranchActivity(owner, repository, userName, branchName)
|
case ReceiveCommand.Type.CREATE => recordCreateBranchActivity(owner, repository, pusher, branchName)
|
||||||
case ReceiveCommand.Type.UPDATE => recordPushActivity(owner, repository, userName, branchName, newCommits)
|
case ReceiveCommand.Type.UPDATE => recordPushActivity(owner, repository, pusher, branchName, newCommits)
|
||||||
case ReceiveCommand.Type.DELETE => recordDeleteBranchActivity(owner, repository, userName, branchName)
|
case ReceiveCommand.Type.DELETE => recordDeleteBranchActivity(owner, repository, pusher, branchName)
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
} else if(refName(1) == "tags"){
|
} else if(refName(1) == "tags"){
|
||||||
command.getType match {
|
command.getType match {
|
||||||
case ReceiveCommand.Type.CREATE => recordCreateTagActivity(owner, repository, userName, branchName, newCommits)
|
case ReceiveCommand.Type.CREATE => recordCreateTagActivity(owner, repository, pusher, branchName, newCommits)
|
||||||
case ReceiveCommand.Type.DELETE => recordDeleteTagActivity(owner, repository, userName, branchName, newCommits)
|
case ReceiveCommand.Type.DELETE => recordDeleteTagActivity(owner, repository, pusher, branchName, newCommits)
|
||||||
case _ =>
|
case _ =>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -141,17 +141,14 @@ class CommitLogHook(owner: String, repository: String, userName: String, baseURL
|
|||||||
}
|
}
|
||||||
|
|
||||||
// call web hook
|
// call web hook
|
||||||
val webHookURLs = getWebHookURLs(owner, repository)
|
getWebHookURLs(owner, repository) match {
|
||||||
if(webHookURLs.nonEmpty){
|
case webHookURLs if(webHookURLs.nonEmpty) =>
|
||||||
val payload = WebHookPayload(
|
for(pusherAccount <- getAccountByUserName(pusher);
|
||||||
git,
|
ownerAccount <- getAccountByUserName(owner);
|
||||||
getAccountByUserName(userName).get,
|
repositoryInfo <- getRepository(owner, repository, baseURL)){
|
||||||
command.getRefName,
|
callWebHook(owner, repository, webHookURLs,
|
||||||
getRepository(owner, repository, baseURL).get,
|
WebHookPayload(git, pusherAccount, command.getRefName, repositoryInfo, newCommits, ownerAccount))
|
||||||
newCommits,
|
}
|
||||||
getAccountByUserName(owner).get)
|
|
||||||
|
|
||||||
callWebHook(owner, repository, webHookURLs, payload)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,8 +159,10 @@ class CommitLogHook(owner: String, repository: String, userName: String, baseURL
|
|||||||
private def createIssueComment(commit: CommitInfo) = {
|
private def createIssueComment(commit: CommitInfo) = {
|
||||||
"(^|\\W)#(\\d+)(\\W|$)".r.findAllIn(commit.fullMessage).matchData.foreach { matchData =>
|
"(^|\\W)#(\\d+)(\\W|$)".r.findAllIn(commit.fullMessage).matchData.foreach { matchData =>
|
||||||
val issueId = matchData.group(2)
|
val issueId = matchData.group(2)
|
||||||
if(getAccountByUserName(commit.committer).isDefined && getIssue(owner, repository, issueId).isDefined){
|
if(getIssue(owner, repository, issueId).isDefined){
|
||||||
createComment(owner, repository, commit.committer, issueId.toInt, commit.fullMessage + " " + commit.id, "commit")
|
getAccountByMailAddress(commit.mailAddress).foreach { account =>
|
||||||
|
createComment(owner, repository, account.userName, issueId.toInt, commit.fullMessage + " " + commit.id, "commit")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user