(refs #33)Match committer by mail address.

This commit is contained in:
takezoe
2013-07-12 04:27:20 +09:00
parent 60cd1320d2
commit 828688ddd0
6 changed files with 37 additions and 13 deletions

View File

@@ -43,8 +43,10 @@ object JGitUtil {
* @param message the last commit message
* @param commitId the last commit id
* @param committer the last committer name
* @param mailAddress the committer's mail address
*/
case class FileInfo(id: ObjectId, isDirectory: Boolean, name: String, time: Date, message: String, commitId: String, committer: String)
case class FileInfo(id: ObjectId, isDirectory: Boolean, name: String, time: Date, message: String, commitId: String,
committer: String, mailAddress: String)
/**
* The commit data.
@@ -52,14 +54,18 @@ object JGitUtil {
* @param id the commit id
* @param time the commit time
* @param committer the committer name
* @param mailAddress the committer's mail address
* @param shortMessage the short message
* @param fullMessage the full message
* @param parents the list of parent commit id
*/
case class CommitInfo(id: String, time: Date, committer: String, shortMessage: String, fullMessage: String, parents: List[String]){
case class CommitInfo(id: String, time: Date, committer: String, mailAddress: String,
shortMessage: String, fullMessage: String, parents: List[String]){
def this(rev: org.eclipse.jgit.revwalk.RevCommit) = this(
rev.getName, rev.getCommitterIdent.getWhen, rev.getCommitterIdent.getName, rev.getShortMessage, rev.getFullMessage,
rev.getName, rev.getCommitterIdent.getWhen,
rev.getCommitterIdent.getName, rev.getCommitterIdent.getEmailAddress,
rev.getShortMessage, rev.getFullMessage,
rev.getParents().map(_.name).toList)
val summary = {
@@ -233,7 +239,8 @@ object JGitUtil {
commits(path).getCommitterIdent.getWhen,
commits(path).getShortMessage,
commits(path).getName,
commits(path).getCommitterIdent.getName)
commits(path).getCommitterIdent.getName,
commits(path).getCommitterIdent.getEmailAddress)
}.sortWith { (file1, file2) =>
(file1.isDirectory, file2.isDirectory) match {
case (true , false) => true

View File

@@ -79,13 +79,26 @@ object helpers {
.replaceAll("(^|\\W)([a-f0-9]{40})(\\W|$)", s"""$$1<a href="${context.path}/${repository.owner}/${repository.name}/commit/$$2">$$2</a>$$3"""))
def user(userName: String, mailAddress: String, styleClass: String = "")(implicit context: app.Context): Html = {
val account = context.cache(s"account.${mailAddress}"){
new AccountService {}.getAccountByMailAddress(mailAddress)
}
account.map { account =>
Html(s"""<a href="${url(account.userName)}" class="${styleClass}">${userName}</a>""")
} getOrElse Html(userName)
}
/**
* Returns &lt;img&gt; which displays the avatar icon.
* Looks up Gravatar if avatar icon has not been configured in user settings.
*/
def avatar(userName: String, size: Int, tooltip: Boolean = false)(implicit context: app.Context): Html = {
val account = context.cache(s"account.${userName}"){
new AccountService {}.getAccountByUserName(userName)
if(userName.contains("@")){
new AccountService {}.getAccountByMailAddress(userName)
} else {
new AccountService {}.getAccountByUserName(userName)
}
}
val src = account.collect { case account if(account.image.isEmpty) =>
s"""http://www.gravatar.com/avatar/${StringUtil.md5(account.mailAddress)}?s=${size}"""