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:
		
							parent
							
								
									c752ccee64
								
							
						
					
					
						commit
						9513638715
					
				|  | @ -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 { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue