Change the create tag form to a dialog
1 parent f360a3b commit a5e130db0b879bfb7e648fa9c2578f5af0fa1f23
@Naoki Takezoe Naoki Takezoe authored on 23 Jul 2018
Showing 4 changed files
View
38
src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala
issueId: Option[Int],
diff: Option[String]
)
 
case class TagForm(
commitId: String,
tagName: String,
message: Option[String]
)
 
val uploadForm = mapping(
"branch" -> trim(label("Branch", text(required))),
"path" -> trim(label("Path", text())),
"uploadFiles" -> trim(label("Upload files", text(required))),
"content" -> trim(label("Content", text(required))),
"issueId" -> trim(label("Issue Id", optional(number()))),
"diff" -> optional(text())
)(CommentForm.apply)
 
val tagForm = mapping(
"commitId" -> trim(label("Commit id", text(required))),
"tagName" -> trim(label("Tag name", text(required))),
"message" -> trim(label("Message", optional(text())))
)(TagForm.apply)
 
/**
* Returns converted HTML from Markdown for preview.
*/
html.branches(branches, hasDeveloperRole(repository.owner, repository.name, context.loginAccount), repository)
})
 
/**
* Creates a tag
*/
post("/:owner/:repository/tags")(writableUsersOnly { repository =>
val tagName = params.getOrElse("name", halt(400))
val message = params.getOrElse("message", halt(400))
val commitId = params.getOrElse("commit", halt(400))
* Displays the create tag dialog.
*/
get("/:owner/:repository/tag/:id")(writableUsersOnly { repository =>
html.tag(params("id"), repository)
})
 
/**
* Creates a tag.
*/
post("/:owner/:repository/tag", tagForm)(writableUsersOnly { (form, repository) =>
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
JGitUtil.createTag(git, tagName, message, commitId)
JGitUtil.createTag(git, form.tagName, form.message, form.commitId)
} match {
case Right(message) =>
flash += "info" -> message
redirect(s"/${repository.owner}/${repository.name}/commit/${commitId}")
redirect(s"/${repository.owner}/${repository.name}/commit/${form.commitId}")
case Left(message) =>
flash += "error" -> message
redirect(s"/${repository.owner}/${repository.name}/commit/${commitId}")
redirect(s"/${repository.owner}/${repository.name}/commit/${form.commitId}")
}
})
 
/**
View
16
src/main/scala/gitbucket/core/util/JGitUtil.scala
}
.find(_._1 != null)
}
 
def createTag(git: Git, name: String, message: String, commitId: String) = {
def createTag(git: Git, name: String, message: Option[String], commitId: String) = {
try {
val objectId: ObjectId = git.getRepository.resolve(commitId)
val walk: RevWalk = new RevWalk(git.getRepository)
val tagCommand = git.tag().setName(name).setObjectId(walk.parseCommit(objectId))
if (!message.isEmpty) {
tagCommand.setMessage(message)
}
tagCommand.call()
using(new RevWalk(git.getRepository)) { walk =>
val tagCommand = git.tag().setName(name).setObjectId(walk.parseCommit(objectId))
message.foreach { message =>
tagCommand.setMessage(message)
}
tagCommand.call()
}
Right("Tag added.")
} catch {
case e: GitAPIException => Left("Sorry, some Git operation error occurs.")
case e: ConcurrentRefUpdateException => Left("Sorry some error occurs.")
View
src/main/twirl/gitbucket/core/repo/commit.scala.html
View
src/main/twirl/gitbucket/core/repo/tag.scala.html 0 → 100644