Explorar el Código

migrations: remove old migrations before 0.12.0 (#6270)

ᴜɴᴋɴᴡᴏɴ hace 4 años
padre
commit
3ed8c292c2

+ 1 - 0
CHANGELOG.md

@@ -12,6 +12,7 @@ All notable changes to Gogs are documented in this file.
 
 ### Removed
 
+- ⚠️ Migrations before 0.12 are removed, installations not on 0.12 should upgrade to it to run the migrations and then upgrade to 0.13.
 - Configuration section `[mailer]` is no longer used.
 - Configuration section `[service]` is no longer used.
 - Configuration option `APP_NAME` is no longer used.

+ 12 - 278
internal/db/migrations/migrations.go

@@ -6,17 +6,12 @@ package migrations
 
 import (
 	"fmt"
-	"strings"
-	"time"
 
-	"github.com/unknwon/com"
 	log "unknwon.dev/clog/v2"
 	"xorm.io/xorm"
-
-	"gogs.io/gogs/internal/strutil"
 )
 
-const _MIN_DB_VER = 10
+const minDBVersion = 19
 
 type Migration interface {
 	Description() string
@@ -52,22 +47,11 @@ type Version struct {
 var migrations = []Migration{
 	// v0 -> v4 : before 0.6.0 -> last support 0.7.33
 	// v4 -> v10: before 0.7.0 -> last support 0.9.141
-	NewMigration("generate rands and salt for organizations", generateOrgRandsAndSalt),           // V10 -> V11:v0.8.5
-	NewMigration("convert date to unix timestamp", convertDateToUnix),                            // V11 -> V12:v0.9.2
-	NewMigration("convert LDAP UseSSL option to SecurityProtocol", ldapUseSSLToSecurityProtocol), // V12 -> V13:v0.9.37
+	// v10 -> v19: before 0.11.55 -> last support 0.12.0
 
-	// v13 -> v14:v0.9.87
-	NewMigration("set comment updated with created", setCommentUpdatedWithCreated),
-	// v14 -> v15:v0.9.147
-	NewMigration("generate and migrate Git hooks", generateAndMigrateGitHooks),
-	// v15 -> v16:v0.10.16
-	NewMigration("update repository sizes", updateRepositorySizes),
-	// v16 -> v17:v0.10.31
-	NewMigration("remove invalid protect branch whitelist", removeInvalidProtectBranchWhitelist),
-	// v17 -> v18:v0.11.48
-	NewMigration("store long text in repository description field", updateRepositoryDescriptionField),
+	// Add new migration here, example:
 	// v18 -> v19:v0.11.55
-	NewMigration("clean unlinked webhook and hook_tasks", cleanUnlinkedWebhookAndHookTasks),
+	// NewMigration("clean unlinked webhook and hook_tasks", cleanUnlinkedWebhookAndHookTasks),
 }
 
 // Migrate database to current version
@@ -84,7 +68,7 @@ func Migrate(x *xorm.Engine) error {
 		// If the version record does not exist we think
 		// it is a fresh installation and we can skip all migrations.
 		currentVersion.ID = 0
-		currentVersion.Version = int64(_MIN_DB_VER + len(migrations))
+		currentVersion.Version = int64(minDBVersion + len(migrations))
 
 		if _, err = x.InsertOne(currentVersion); err != nil {
 			return fmt.Errorf("insert: %v", err)
@@ -92,7 +76,7 @@ func Migrate(x *xorm.Engine) error {
 	}
 
 	v := currentVersion.Version
-	if _MIN_DB_VER > v {
+	if minDBVersion > v {
 		log.Fatal(`
 Hi there, thank you for using Gogs for so long!
 However, Gogs has stopped supporting auto-migration from your previously installed version.
@@ -105,8 +89,10 @@ Please save following instructions to somewhere and start working:
 	https://gogs.io/gogs/releases/tag/v0.7.33
 - If you were using below 0.7.0 (e.g. 0.6.x), download last supported archive from following link:
 	https://gogs.io/gogs/releases/tag/v0.9.141
+- If you were using below 0.11.55 (e.g. 0.9.141), download last supported archive from following link:
+	https://gogs.io/gogs/releases/tag/v0.12.0
 
-Once finished downloading,
+Once finished downloading:
 
 1. Extract the archive and to upgrade steps as usual.
 2. Run it once. To verify, you should see some migration traces.
@@ -118,13 +104,13 @@ In case you're stilling getting this notice, go through instructions again until
 		return nil
 	}
 
-	if int(v-_MIN_DB_VER) > len(migrations) {
+	if int(v-minDBVersion) > len(migrations) {
 		// User downgraded Gogs.
-		currentVersion.Version = int64(len(migrations) + _MIN_DB_VER)
+		currentVersion.Version = int64(len(migrations) + minDBVersion)
 		_, err = x.Id(1).Update(currentVersion)
 		return err
 	}
-	for i, m := range migrations[v-_MIN_DB_VER:] {
+	for i, m := range migrations[v-minDBVersion:] {
 		log.Info("Migration: %s", m.Description())
 		if err = m.Migrate(x); err != nil {
 			return fmt.Errorf("do migrate: %v", err)
@@ -136,255 +122,3 @@ In case you're stilling getting this notice, go through instructions again until
 	}
 	return nil
 }
-
-func generateOrgRandsAndSalt(x *xorm.Engine) (err error) {
-	type User struct {
-		ID    int64  `xorm:"pk autoincr"`
-		Rands string `xorm:"VARCHAR(10)"`
-		Salt  string `xorm:"VARCHAR(10)"`
-	}
-
-	orgs := make([]*User, 0, 10)
-	if err = x.Where("type=1").And("rands=''").Find(&orgs); err != nil {
-		return fmt.Errorf("select all organizations: %v", err)
-	}
-
-	sess := x.NewSession()
-	defer sess.Close()
-	if err = sess.Begin(); err != nil {
-		return err
-	}
-
-	for _, org := range orgs {
-		if org.Rands, err = strutil.RandomChars(10); err != nil {
-			return err
-		}
-		if org.Salt, err = strutil.RandomChars(10); err != nil {
-			return err
-		}
-		if _, err = sess.ID(org.ID).Update(org); err != nil {
-			return err
-		}
-	}
-
-	return sess.Commit()
-}
-
-type TAction struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-}
-
-func (t *TAction) TableName() string { return "action" }
-
-type TNotice struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-}
-
-func (t *TNotice) TableName() string { return "notice" }
-
-type TComment struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-}
-
-func (t *TComment) TableName() string { return "comment" }
-
-type TIssue struct {
-	ID           int64 `xorm:"pk autoincr"`
-	DeadlineUnix int64
-	CreatedUnix  int64
-	UpdatedUnix  int64
-}
-
-func (t *TIssue) TableName() string { return "issue" }
-
-type TMilestone struct {
-	ID             int64 `xorm:"pk autoincr"`
-	DeadlineUnix   int64
-	ClosedDateUnix int64
-}
-
-func (t *TMilestone) TableName() string { return "milestone" }
-
-type TAttachment struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-}
-
-func (t *TAttachment) TableName() string { return "attachment" }
-
-type TLoginSource struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TLoginSource) TableName() string { return "login_source" }
-
-type TPull struct {
-	ID         int64 `xorm:"pk autoincr"`
-	MergedUnix int64
-}
-
-func (t *TPull) TableName() string { return "pull_request" }
-
-type TRelease struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-}
-
-func (t *TRelease) TableName() string { return "release" }
-
-type TRepo struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TRepo) TableName() string { return "repository" }
-
-type TMirror struct {
-	ID             int64 `xorm:"pk autoincr"`
-	UpdatedUnix    int64
-	NextUpdateUnix int64
-}
-
-func (t *TMirror) TableName() string { return "mirror" }
-
-type TPublicKey struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TPublicKey) TableName() string { return "public_key" }
-
-type TDeployKey struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TDeployKey) TableName() string { return "deploy_key" }
-
-type TAccessToken struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TAccessToken) TableName() string { return "access_token" }
-
-type TUser struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TUser) TableName() string { return "user" }
-
-type TWebhook struct {
-	ID          int64 `xorm:"pk autoincr"`
-	CreatedUnix int64
-	UpdatedUnix int64
-}
-
-func (t *TWebhook) TableName() string { return "webhook" }
-
-func convertDateToUnix(x *xorm.Engine) (err error) {
-	log.Info("This migration could take up to minutes, please be patient.")
-	type Bean struct {
-		ID         int64 `xorm:"pk autoincr"`
-		Created    time.Time
-		Updated    time.Time
-		Merged     time.Time
-		Deadline   time.Time
-		ClosedDate time.Time
-		NextUpdate time.Time
-	}
-
-	var tables = []struct {
-		name string
-		cols []string
-		bean interface{}
-	}{
-		{"action", []string{"created"}, new(TAction)},
-		{"notice", []string{"created"}, new(TNotice)},
-		{"comment", []string{"created"}, new(TComment)},
-		{"issue", []string{"deadline", "created", "updated"}, new(TIssue)},
-		{"milestone", []string{"deadline", "closed_date"}, new(TMilestone)},
-		{"attachment", []string{"created"}, new(TAttachment)},
-		{"login_source", []string{"created", "updated"}, new(TLoginSource)},
-		{"pull_request", []string{"merged"}, new(TPull)},
-		{"release", []string{"created"}, new(TRelease)},
-		{"repository", []string{"created", "updated"}, new(TRepo)},
-		{"mirror", []string{"updated", "next_update"}, new(TMirror)},
-		{"public_key", []string{"created", "updated"}, new(TPublicKey)},
-		{"deploy_key", []string{"created", "updated"}, new(TDeployKey)},
-		{"access_token", []string{"created", "updated"}, new(TAccessToken)},
-		{"user", []string{"created", "updated"}, new(TUser)},
-		{"webhook", []string{"created", "updated"}, new(TWebhook)},
-	}
-
-	for _, table := range tables {
-		log.Info("Converting table: %s", table.name)
-		if err = x.Sync2(table.bean); err != nil {
-			return fmt.Errorf("Sync [table: %s]: %v", table.name, err)
-		}
-
-		offset := 0
-		for {
-			beans := make([]*Bean, 0, 100)
-			if err = x.SQL(fmt.Sprintf("SELECT * FROM `%s` ORDER BY id ASC LIMIT 100 OFFSET %d",
-				table.name, offset)).Find(&beans); err != nil {
-				return fmt.Errorf("select beans [table: %s, offset: %d]: %v", table.name, offset, err)
-			}
-			log.Trace("Table [%s]: offset: %d, beans: %d", table.name, offset, len(beans))
-			if len(beans) == 0 {
-				break
-			}
-			offset += 100
-
-			baseSQL := "UPDATE `" + table.name + "` SET "
-			for _, bean := range beans {
-				valSQLs := make([]string, 0, len(table.cols))
-				for _, col := range table.cols {
-					fieldSQL := ""
-					fieldSQL += col + "_unix = "
-
-					switch col {
-					case "deadline":
-						if bean.Deadline.IsZero() {
-							continue
-						}
-						fieldSQL += com.ToStr(bean.Deadline.Unix())
-					case "created":
-						fieldSQL += com.ToStr(bean.Created.Unix())
-					case "updated":
-						fieldSQL += com.ToStr(bean.Updated.Unix())
-					case "closed_date":
-						fieldSQL += com.ToStr(bean.ClosedDate.Unix())
-					case "merged":
-						fieldSQL += com.ToStr(bean.Merged.Unix())
-					case "next_update":
-						fieldSQL += com.ToStr(bean.NextUpdate.Unix())
-					}
-
-					valSQLs = append(valSQLs, fieldSQL)
-				}
-
-				if len(valSQLs) == 0 {
-					continue
-				}
-
-				if _, err = x.Exec(baseSQL + strings.Join(valSQLs, ",") + " WHERE id = " + com.ToStr(bean.ID)); err != nil {
-					return fmt.Errorf("update bean [table: %s, id: %d]: %v", table.name, bean.ID, err)
-				}
-			}
-		}
-	}
-
-	return nil
-}

+ 0 - 52
internal/db/migrations/v13.go

@@ -1,52 +0,0 @@
-// Copyright 2016 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-	"strings"
-
-	"github.com/unknwon/com"
-	"xorm.io/xorm"
-	"github.com/json-iterator/go"
-)
-
-func ldapUseSSLToSecurityProtocol(x *xorm.Engine) error {
-	results, err := x.Query("SELECT `id`,`cfg` FROM `login_source` WHERE `type` = 2 OR `type` = 5")
-	if err != nil {
-		if strings.Contains(err.Error(), "no such column") {
-			return nil
-		}
-		return fmt.Errorf("select LDAP login sources: %v", err)
-	}
-
-	sess := x.NewSession()
-	defer sess.Close()
-	if err = sess.Begin(); err != nil {
-		return err
-	}
-
-	for _, result := range results {
-		cfg := map[string]interface{}{}
-		if err = jsoniter.Unmarshal(result["cfg"], &cfg); err != nil {
-			return fmt.Errorf("unmarshal JSON config: %v", err)
-		}
-		if com.ToStr(cfg["UseSSL"]) == "true" {
-			cfg["SecurityProtocol"] = 1 // LDAPS
-		}
-		delete(cfg, "UseSSL")
-
-		data, err := jsoniter.Marshal(&cfg)
-		if err != nil {
-			return fmt.Errorf("marshal JSON config: %v", err)
-		}
-
-		if _, err = sess.Exec("UPDATE `login_source` SET `cfg`=? WHERE `id`=?",
-			string(data), com.StrTo(result["id"]).MustInt64()); err != nil {
-			return fmt.Errorf("update config column: %v", err)
-		}
-	}
-	return sess.Commit()
-}

+ 0 - 24
internal/db/migrations/v14.go

@@ -1,24 +0,0 @@
-// Copyright 2016 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-
-	"xorm.io/xorm"
-)
-
-func setCommentUpdatedWithCreated(x *xorm.Engine) (err error) {
-	type Comment struct {
-		UpdatedUnix int64
-	}
-
-	if err = x.Sync2(new(Comment)); err != nil {
-		return fmt.Errorf("Sync2: %v", err)
-	} else if _, err = x.Exec("UPDATE comment SET updated_unix = created_unix"); err != nil {
-		return fmt.Errorf("set update_unix: %v", err)
-	}
-	return nil
-}

+ 0 - 105
internal/db/migrations/v15.go

@@ -1,105 +0,0 @@
-// Copyright 2017 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"strings"
-
-	"github.com/unknwon/com"
-	log "unknwon.dev/clog/v2"
-	"xorm.io/xorm"
-
-	"gogs.io/gogs/internal/conf"
-	"gogs.io/gogs/internal/osutil"
-)
-
-func generateAndMigrateGitHooks(x *xorm.Engine) (err error) {
-	type Repository struct {
-		ID      int64
-		OwnerID int64
-		Name    string
-	}
-	type User struct {
-		ID   int64
-		Name string
-	}
-	var (
-		hookNames = []string{"pre-receive", "update", "post-receive"}
-		hookTpls  = []string{
-			fmt.Sprintf("#!/usr/bin/env %s\n\"%s\" hook --config='%s' pre-receive\n", conf.Repository.ScriptType, conf.AppPath(), conf.CustomConf),
-			fmt.Sprintf("#!/usr/bin/env %s\n\"%s\" hook --config='%s' update $1 $2 $3\n", conf.Repository.ScriptType, conf.AppPath(), conf.CustomConf),
-			fmt.Sprintf("#!/usr/bin/env %s\n\"%s\" hook --config='%s' post-receive\n", conf.Repository.ScriptType, conf.AppPath(), conf.CustomConf),
-		}
-	)
-
-	// Cleanup old update.log and http.log files.
-	_ = filepath.Walk(conf.Log.RootPath, func(path string, info os.FileInfo, err error) error {
-		if !info.IsDir() &&
-			(strings.HasPrefix(filepath.Base(path), "update.log") ||
-				strings.HasPrefix(filepath.Base(path), "http.log")) {
-			_ = os.Remove(path)
-		}
-		return nil
-	})
-
-	return x.Where("id > 0").Iterate(new(Repository),
-		func(idx int, bean interface{}) error {
-			repo := bean.(*Repository)
-			if repo.Name == "." || repo.Name == ".." {
-				return nil
-			}
-
-			user := new(User)
-			has, err := x.Where("id = ?", repo.OwnerID).Get(user)
-			if err != nil {
-				return fmt.Errorf("query owner of repository [repo_id: %d, owner_id: %d]: %v", repo.ID, repo.OwnerID, err)
-			} else if !has {
-				return nil
-			}
-
-			repoBase := filepath.Join(conf.Repository.Root, strings.ToLower(user.Name), strings.ToLower(repo.Name))
-			repoPath := repoBase + ".git"
-			wikiPath := repoBase + ".wiki.git"
-			log.Trace("[%04d]: %s", idx, repoPath)
-
-			// Note: we should not create hookDir here because update hook file should already exists inside this direcotry,
-			// if this directory does not exist, the current setup is not correct anyway.
-			hookDir := filepath.Join(repoPath, "hooks")
-			customHookDir := filepath.Join(repoPath, "custom_hooks")
-			wikiHookDir := filepath.Join(wikiPath, "hooks")
-
-			for i, hookName := range hookNames {
-				oldHookPath := filepath.Join(hookDir, hookName)
-				newHookPath := filepath.Join(customHookDir, hookName)
-
-				// Gogs didn't allow user to set custom update hook thus no migration for it.
-				// In case user runs this migration multiple times, and custom hook exists,
-				// we assume it's been migrated already.
-				if hookName != "update" && osutil.IsFile(oldHookPath) && !com.IsExist(customHookDir) {
-					_ = os.MkdirAll(customHookDir, os.ModePerm)
-					if err = os.Rename(oldHookPath, newHookPath); err != nil {
-						return fmt.Errorf("move hook file to custom directory '%s' -> '%s': %v", oldHookPath, newHookPath, err)
-					}
-				}
-
-				if err = ioutil.WriteFile(oldHookPath, []byte(hookTpls[i]), os.ModePerm); err != nil {
-					return fmt.Errorf("write hook file '%s': %v", oldHookPath, err)
-				}
-
-				if com.IsDir(wikiPath) {
-					_ = os.MkdirAll(wikiHookDir, os.ModePerm)
-					wikiHookPath := filepath.Join(wikiHookDir, hookName)
-					if err = ioutil.WriteFile(wikiHookPath, []byte(hookTpls[i]), os.ModePerm); err != nil {
-						return fmt.Errorf("write wiki hook file '%s': %v", wikiHookPath, err)
-					}
-				}
-			}
-			return nil
-		})
-}

+ 0 - 77
internal/db/migrations/v16.go

@@ -1,77 +0,0 @@
-// Copyright 2017 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-	"path/filepath"
-	"strings"
-
-	log "unknwon.dev/clog/v2"
-	"xorm.io/xorm"
-
-	"github.com/gogs/git-module"
-
-	"gogs.io/gogs/internal/conf"
-)
-
-func updateRepositorySizes(x *xorm.Engine) (err error) {
-	log.Info("[migrations.v16] This migration could take up to minutes, please be patient.")
-	type Repository struct {
-		ID      int64
-		OwnerID int64
-		Name    string
-		Size    int64
-	}
-	type User struct {
-		ID   int64
-		Name string
-	}
-	if err = x.Sync2(new(Repository)); err != nil {
-		return fmt.Errorf("Sync2: %v", err)
-	}
-
-	// For the sake of SQLite3, we can't use x.Iterate here.
-	offset := 0
-	for {
-		repos := make([]*Repository, 0, 10)
-		if err = x.SQL(fmt.Sprintf("SELECT * FROM `repository` ORDER BY id ASC LIMIT 10 OFFSET %d", offset)).
-			Find(&repos); err != nil {
-			return fmt.Errorf("select repos [offset: %d]: %v", offset, err)
-		}
-		log.Trace("[migrations.v16] Select [offset: %d, repos: %d]", offset, len(repos))
-		if len(repos) == 0 {
-			break
-		}
-		offset += 10
-
-		for _, repo := range repos {
-			if repo.Name == "." || repo.Name == ".." {
-				continue
-			}
-
-			user := new(User)
-			has, err := x.Where("id = ?", repo.OwnerID).Get(user)
-			if err != nil {
-				return fmt.Errorf("query owner of repository [repo_id: %d, owner_id: %d]: %v", repo.ID, repo.OwnerID, err)
-			} else if !has {
-				continue
-			}
-
-			repoPath := strings.ToLower(filepath.Join(conf.Repository.Root, user.Name, repo.Name)) + ".git"
-			countObject, err := git.RepoCountObjects(repoPath)
-			if err != nil {
-				log.Warn("[migrations.v16] Count repository objects: %v", err)
-				continue
-			}
-
-			repo.Size = countObject.Size + countObject.SizePack
-			if _, err = x.Id(repo.ID).Cols("size").Update(repo); err != nil {
-				return fmt.Errorf("update size: %v", err)
-			}
-		}
-	}
-	return nil
-}

+ 0 - 22
internal/db/migrations/v17.go

@@ -1,22 +0,0 @@
-// Copyright 2017 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-
-	"xorm.io/xorm"
-)
-
-func removeInvalidProtectBranchWhitelist(x *xorm.Engine) error {
-	exist, err := x.IsTableExist("protect_branch_whitelist")
-	if err != nil {
-		return fmt.Errorf("IsTableExist: %v", err)
-	} else if !exist {
-		return nil
-	}
-	_, err = x.Exec("DELETE FROM protect_branch_whitelist WHERE protect_branch_id = 0")
-	return err
-}

+ 0 - 34
internal/db/migrations/v18.go

@@ -1,34 +0,0 @@
-// Copyright 2018 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"fmt"
-
-	"xorm.io/xorm"
-
-	"gogs.io/gogs/internal/conf"
-)
-
-func updateRepositoryDescriptionField(x *xorm.Engine) error {
-	exist, err := x.IsTableExist("repository")
-	if err != nil {
-		return fmt.Errorf("IsTableExist: %v", err)
-	} else if !exist {
-		return nil
-	}
-	switch {
-		case conf.UseMySQL:
-			_, err = x.Exec("ALTER TABLE `repository` MODIFY `description` VARCHAR(512);")
-		case conf.UseMSSQL:
-			_, err = x.Exec("ALTER TABLE `repository` ALTER COLUMN `description` VARCHAR(512);")
-		case conf.UsePostgreSQL:
-			_, err = x.Exec("ALTER TABLE `repository` ALTER COLUMN `description` TYPE VARCHAR(512);")
-		case conf.UseSQLite3:
-			// Sqlite3 uses TEXT type by default for any string type field.
-			// Keep this comment to mention that we don't missed any option.
-	}
-	return err
-}

+ 0 - 18
internal/db/migrations/v19.go

@@ -1,18 +0,0 @@
-// Copyright 2018 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package migrations
-
-import (
-	"xorm.io/xorm"
-)
-
-func cleanUnlinkedWebhookAndHookTasks(x *xorm.Engine) error {
-	_, err := x.Exec(`DELETE FROM webhook WHERE repo_id NOT IN (SELECT id FROM repository);`)
-	if err != nil {
-		return err
-	}
-	_, err = x.Exec(`DELETE FROM hook_task WHERE repo_id NOT IN (SELECT id FROM repository);`)
-	return err
-}