diff --git a/src/main/scala/service/ActivityService.scala b/src/main/scala/service/ActivityService.scala index b607488..fce0b09 100644 --- a/src/main/scala/service/ActivityService.scala +++ b/src/main/scala/service/ActivityService.scala @@ -109,11 +109,26 @@ s"[user:${activityUserName}] created tag [tag:${userName}/${repositoryName}#${tagName}] at [repo:${userName}/${repositoryName}]", None, currentDate) - + + def recordDeleteTagActivity(userName: String, repositoryName: String, activityUserName: String, + tagName: String, commits: List[util.JGitUtil.CommitInfo]) = + Activities.autoInc insert(userName, repositoryName, activityUserName, + "delete_tag", + s"[user:${activityUserName}] deleted tag ${tagName} at [repo:${userName}/${repositoryName}]", + None, + currentDate) + def recordCreateBranchActivity(userName: String, repositoryName: String, activityUserName: String, branchName: String) = Activities.autoInc insert(userName, repositoryName, activityUserName, "create_branch", - s"[user:${activityUserName}] created branch [tag:${userName}/${repositoryName}#${branchName}] at [repo:${userName}/${repositoryName}]", + s"[user:${activityUserName}] created branch [branch:${userName}/${repositoryName}#${branchName}] at [repo:${userName}/${repositoryName}]", + None, + currentDate) + + def recordDeleteBranchActivity(userName: String, repositoryName: String, activityUserName: String, branchName: String) = + Activities.autoInc insert(userName, repositoryName, activityUserName, + "delete_branch", + s"[user:${activityUserName}] deleted branch ${branchName} at [repo:${userName}/${repositoryName}]", None, currentDate) diff --git a/src/main/scala/servlet/GitRepositoryServlet.scala b/src/main/scala/servlet/GitRepositoryServlet.scala index c25a786..f976320 100644 --- a/src/main/scala/servlet/GitRepositoryServlet.scala +++ b/src/main/scala/servlet/GitRepositoryServlet.scala @@ -85,7 +85,11 @@ def onPostReceive(receivePack: ReceivePack, commands: java.util.Collection[ReceiveCommand]): Unit = { using(Git.open(Directory.getRepositoryDir(owner, repository))) { git => commands.asScala.foreach { command => - val commits = JGitUtil.getCommitLog(git, command.getOldId.name, command.getNewId.name) + logger.debug(s"commandType: ${command.getType}, refName: ${command.getRefName}") + val commits = command.getType match { + case ReceiveCommand.Type.DELETE => Nil + case _ => JGitUtil.getCommitLog(git, command.getOldId.name, command.getNewId.name) + } val refName = command.getRefName.split("/") val branchName = refName.drop(2).mkString("/") @@ -113,16 +117,15 @@ // record activity if(refName(1) == "heads"){ command.getType match { - case ReceiveCommand.Type.CREATE => { - recordCreateBranchActivity(owner, repository, userName, branchName) - recordPushActivity(owner, repository, userName, branchName, newCommits) - } + case ReceiveCommand.Type.CREATE => recordCreateBranchActivity(owner, repository, userName, branchName) case ReceiveCommand.Type.UPDATE => recordPushActivity(owner, repository, userName, branchName, newCommits) + case ReceiveCommand.Type.DELETE => recordDeleteBranchActivity(owner, repository, userName, branchName) case _ => } } else if(refName(1) == "tags"){ command.getType match { case ReceiveCommand.Type.CREATE => recordCreateTagActivity(owner, repository, userName, branchName, newCommits) + case ReceiveCommand.Type.DELETE => recordDeleteTagActivity(owner, repository, userName, branchName, newCommits) case _ => } } diff --git a/src/main/twirl/helper/activities.scala.html b/src/main/twirl/helper/activities.scala.html index 15c8cdc..6e7f324 100644 --- a/src/main/twirl/helper/activities.scala.html +++ b/src/main/twirl/helper/activities.scala.html @@ -16,7 +16,9 @@ case "merge_pullreq" => detailActivity(activity, "activity-merge.png") case "create_repository" => simpleActivity(activity, "activity-create-repository.png") case "create_branch" => simpleActivity(activity, "activity-branch.png") + case "delete_branch" => simpleActivity(activity, "activity-delete.png") case "create_tag" => simpleActivity(activity, "activity-tag.png") + case "delete_tag" => simpleActivity(activity, "activity-delete.png") case "fork" => simpleActivity(activity, "activity-fork.png") case "push" => customActivity(activity, "activity-commit.png"){
diff --git a/src/main/webapp/assets/common/images/activity-delete.png b/src/main/webapp/assets/common/images/activity-delete.png new file mode 100644 index 0000000..4ad4b64 --- /dev/null +++ b/src/main/webapp/assets/common/images/activity-delete.png Binary files differ