[Backport] Prohibit automatic downgrades (#13108) (#13111)

* 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>
This commit is contained in:
6543 2020-10-12 20:24:43 +02:00 committed by GitHub
parent f9942add50
commit e0ae0b3b94
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -7,6 +7,7 @@ package migrations
import ( import (
"fmt" "fmt"
"os"
"regexp" "regexp"
"strings" "strings"
@ -290,12 +291,16 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
return nil return nil
} }
// Downgrading Gitea's database version not supported
if int(v-minDBVersion) > len(migrations) { if int(v-minDBVersion) > len(migrations) {
// User downgraded Gitea. 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",
currentVersion.Version = int64(len(migrations) + minDBVersion) v, minDBVersion+len(migrations), minDBVersion+len(migrations))
_, err = x.ID(1).Update(currentVersion) fmt.Fprint(os.Stderr, msg)
return err log.Fatal(msg)
return nil
} }
// Migrate
for i, m := range migrations[v-minDBVersion:] { for i, m := range migrations[v-minDBVersion:] {
log.Info("Migration[%d]: %s", v+int64(i), m.Description()) log.Info("Migration[%d]: %s", v+int64(i), m.Description())
if err = m.Migrate(x); err != nil { if err = m.Migrate(x); err != nil {