]> source.dussan.org Git - gitea.git/commitdiff
Some improvements for v156 (#13497)
authorLunny Xiao <xiaolunwen@gmail.com>
Tue, 10 Nov 2020 11:44:45 +0000 (19:44 +0800)
committerGitHub <noreply@github.com>
Tue, 10 Nov 2020 11:44:45 +0000 (13:44 +0200)
models/migrations/v156.go

index d1770b6101ad4022eca6ec9226a7d6462442b345..af37e67d82e862e7d95833f0abf9a4b32f15ea0c 100644 (file)
@@ -55,6 +55,7 @@ func fixPublisherIDforTagReleases(x *xorm.Engine) error {
        var (
                repo    *Repository
                gitRepo *git.Repository
+               user    *User
        )
        defer func() {
                if gitRepo != nil {
@@ -69,7 +70,7 @@ func fixPublisherIDforTagReleases(x *xorm.Engine) error {
                }
 
                if err := sess.Limit(batchSize, start).
-                       Where("publisher_id = 0").
+                       Where("publisher_id = 0 OR publisher_id is null").
                        Asc("repo_id", "id").Where("is_tag=?", true).
                        Find(&releases); err != nil {
                        return err
@@ -117,17 +118,21 @@ func fixPublisherIDforTagReleases(x *xorm.Engine) error {
                                return fmt.Errorf("GetTagCommit: %v", err)
                        }
 
-                       u := new(User)
-                       exists, err := sess.Where("email=?", commit.Author.Email).Get(u)
-                       if err != nil {
-                               return err
+                       if user == nil || !strings.EqualFold(user.Email, commit.Author.Email) {
+                               user = new(User)
+                               _, err = sess.Where("email=?", commit.Author.Email).Get(user)
+                               if err != nil {
+                                       return err
+                               }
+
+                               user.Email = commit.Author.Email
                        }
 
-                       if !exists {
+                       if user.ID <= 0 {
                                continue
                        }
 
-                       release.PublisherID = u.ID
+                       release.PublisherID = user.ID
                        if _, err := sess.ID(release.ID).Cols("publisher_id").Update(release); err != nil {
                                return err
                        }