diff options
author | Lauris BH | 2017-10-26 17:24:11 +0300 |
---|---|---|
committer | Lunny Xiao | 2017-10-26 22:24:11 +0800 |
commit | 99023176793943197f92d7cef47009090990e1c1 (patch) | |
tree | 3c596227c59a805a0e9356117750be4c8d8e7256 | |
parent | 33e164168fbecf86c74d730f68b8a3389716f378 (diff) |
Add checks for commits with missing author and time (#2771) (#2785)
* Add checks for commits with missing author and time
* Fix validate commits with emails if it has no Author
-rw-r--r-- | models/update.go | 28 | ||||
-rw-r--r-- | models/user.go | 15 | ||||
-rw-r--r-- | templates/repo/view_list.tmpl | 18 |
3 files changed, 43 insertions, 18 deletions
diff --git a/models/update.go b/models/update.go index 56a227b24..94d5327eb 100644 --- a/models/update.go +++ b/models/update.go @@ -9,6 +9,7 @@ import ( "fmt" "os/exec" "strings" + "time" "code.gitea.io/git" @@ -119,11 +120,24 @@ func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) if err != nil { return fmt.Errorf("Commit: %v", err) } - tagCreatedUnix := commit.Author.When.Unix() - author, err := GetUserByEmail(commit.Author.Email) - if err != nil && !IsErrUserNotExist(err) { - return fmt.Errorf("GetUserByEmail: %v", err) + sig := tag.Tagger + if sig == nil { + sig = commit.Author + } + if sig == nil { + sig = commit.Committer + } + + var author *User + var createdAt = time.Unix(1, 0) + + if sig != nil { + author, err = GetUserByEmail(sig.Email) + if err != nil && !IsErrUserNotExist(err) { + return fmt.Errorf("GetUserByEmail: %v", err) + } + createdAt = sig.When } commitsCount, err := commit.CommitsCount() @@ -144,7 +158,8 @@ func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) IsDraft: false, IsPrerelease: false, IsTag: true, - CreatedUnix: tagCreatedUnix, + Created: createdAt, + CreatedUnix: createdAt.Unix(), } if author != nil { rel.PublisherID = author.ID @@ -155,7 +170,8 @@ func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) } } else { rel.Sha1 = commit.ID.String() - rel.CreatedUnix = tagCreatedUnix + rel.Created = createdAt + rel.CreatedUnix = createdAt.Unix() rel.NumCommits = commitsCount rel.IsDraft = false if rel.IsTag && author != nil { diff --git a/models/user.go b/models/user.go index bbdec7452..fba2fa679 100644 --- a/models/user.go +++ b/models/user.go @@ -1205,6 +1205,9 @@ type UserCommit struct { // ValidateCommitWithEmail check if author's e-mail of commit is corresponding to a user. func ValidateCommitWithEmail(c *git.Commit) *User { + if c.Author == nil { + return nil + } u, err := GetUserByEmail(c.Author.Email) if err != nil { return nil @@ -1223,11 +1226,15 @@ func ValidateCommitsWithEmails(oldCommits *list.List) *list.List { for e != nil { c := e.Value.(*git.Commit) - if v, ok := emails[c.Author.Email]; !ok { - u, _ = GetUserByEmail(c.Author.Email) - emails[c.Author.Email] = u + if c.Author != nil { + if v, ok := emails[c.Author.Email]; !ok { + u, _ = GetUserByEmail(c.Author.Email) + emails[c.Author.Email] = u + } else { + u = v + } } else { - u = v + u = nil } newCommits.PushBack(UserCommit{ diff --git a/templates/repo/view_list.tmpl b/templates/repo/view_list.tmpl index 663ef4144..40419165a 100644 --- a/templates/repo/view_list.tmpl +++ b/templates/repo/view_list.tmpl @@ -4,14 +4,16 @@ <th class="four wide"> {{if .LatestCommitUser}} <img class="ui avatar image img-12" src="{{.LatestCommitUser.RelAvatarLink}}" /> - {{if .LatestCommitUser.FullName}} - <a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommitUser.FullName}}</strong></a> - {{else}} - <a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommit.Author.Name}}</strong></a> - {{end}} + {{if .LatestCommitUser.FullName}} + <a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommitUser.FullName}}</strong></a> + {{else}} + <a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{if .LatestCommit.Author}}{{.LatestCommit.Author.Name}}{{else}}{{.LatestCommitUser.Name}}{{end}}</strong></a> + {{end}} {{else}} - <img class="ui avatar image img-12" src="{{AvatarLink .LatestCommit.Author.Email}}" /> - <strong>{{.LatestCommit.Author.Name}}</strong> + {{if .LatestCommit.Author}} + <img class="ui avatar image img-12" src="{{AvatarLink .LatestCommit.Author.Email}}" /> + <strong>{{.LatestCommit.Author.Name}}</strong> + {{end}} {{end}} <a rel="nofollow" class="ui sha label {{if .LatestCommit.Signature}} isSigned {{if .LatestCommitVerification.Verified }} isVerified {{end}}{{end}}" href="{{.RepoLink}}/commit/{{.LatestCommit.ID}}"> {{ShortSha .LatestCommit.ID.String}} @@ -29,7 +31,7 @@ </th> <th class="nine wide"> </th> - <th class="three wide text grey right age">{{TimeSince .LatestCommit.Author.When $.Lang}}</th> + <th class="three wide text grey right age">{{if .LatestCommit.Author}}{{TimeSince .LatestCommit.Author.When $.Lang}}{{end}}</th> </tr> </thead> <tbody> |