]> source.dussan.org Git - gitea.git/commitdiff
[Backport] Prohibit automatic downgrades (#13108) (#13111)
author6543 <6543@obermui.de>
Mon, 12 Oct 2020 18:24:43 +0000 (20:24 +0200)
committerGitHub <noreply@github.com>
Mon, 12 Oct 2020 18:24:43 +0000 (21:24 +0300)
* Prohibit automatic downgrades

* do not only log, print to stderr too

* Update models/migrations/migrations.go

* Update models/migrations/migrations.go

Co-authored-by: Cirno the Strongest <1447794+CirnoT@users.noreply.github.com>
* a nit

Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: Cirno the Strongest <1447794+CirnoT@users.noreply.github.com>
models/migrations/migrations.go

index 869661aee42349701ac51be9bb0029b775c8461d..b25b6eebd327f294e0c8efb857c6df4f335e48c6 100644 (file)
@@ -7,6 +7,7 @@ package migrations
 
 import (
        "fmt"
+       "os"
        "regexp"
        "strings"
 
@@ -290,12 +291,16 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
                return nil
        }
 
+       // Downgrading Gitea's database version 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 database version 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 {