mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	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>
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user