From 95136387159e116508b98e1aaa2db40993c266ad Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 12 Oct 2020 16:35:56 +0200 Subject: [PATCH] Prohibit automatic downgrades (#13108) Prohibit automatic downgrades by checking the version of the db and warning if the version number should be lower. Close #13107 Co-authored-by: Cirno the Strongest <1447794+CirnoT@users.noreply.github.com> --- models/migrations/migrations.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index d36b984d93dc..dda8c0094191 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -7,6 +7,7 @@ package migrations import ( "fmt" + "os" "reflect" "regexp" "strings" @@ -315,12 +316,16 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t return nil } + // Downgraded Gitea not supported if int(v-minDBVersion) > len(migrations) { - // User downgraded Gitea. - currentVersion.Version = int64(len(migrations) + minDBVersion) - _, err = x.ID(1).Update(currentVersion) - return err + msg := fmt.Sprintf("Downgrading Gitea from '%d' to '%d' is not supported and may result in loss of data integrity.\nIf you really know what you're doing, execute `UPDATE version SET version=%d WHERE id=1;`\n", + v, minDBVersion+len(migrations), minDBVersion+len(migrations)) + fmt.Fprint(os.Stderr, msg) + log.Fatal(msg) + return nil } + + // Migrate for i, m := range migrations[v-minDBVersion:] { log.Info("Migration[%d]: %s", v+int64(i), m.Description()) if err = m.Migrate(x); err != nil {