* Add checks for commits with missing author and time * Fix validate commits with emails if it has no Authortags/v1.21.12.1
| @@ -9,6 +9,7 @@ import ( | |||
| "fmt" | |||
| "os/exec" | |||
| "strings" | |||
| "time" | |||
| "code.gitea.io/git" | |||
| "code.gitea.io/gitea/modules/cache" | |||
| @@ -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 { | |||
| @@ -1193,6 +1193,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 | |||
| @@ -1211,11 +1214,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{ | |||
| @@ -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}} | |||
| @@ -30,7 +32,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> | |||