2015-02-11 21:58:37 -05:00
// Copyright 2015 The Gogs Authors. All rights reserved.
2019-02-18 17:00:27 +01:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2015-02-11 21:58:37 -05:00
2015-01-22 14:49:52 +02:00
package migrations
import (
2022-11-10 22:22:39 +08:00
"context"
2015-02-11 21:58:37 -05:00
"fmt"
2015-01-22 14:56:50 +02:00
2022-11-02 16:54:36 +08:00
"code.gitea.io/gitea/models/migrations/v1_10"
"code.gitea.io/gitea/models/migrations/v1_11"
"code.gitea.io/gitea/models/migrations/v1_12"
"code.gitea.io/gitea/models/migrations/v1_13"
"code.gitea.io/gitea/models/migrations/v1_14"
"code.gitea.io/gitea/models/migrations/v1_15"
"code.gitea.io/gitea/models/migrations/v1_16"
"code.gitea.io/gitea/models/migrations/v1_17"
"code.gitea.io/gitea/models/migrations/v1_18"
"code.gitea.io/gitea/models/migrations/v1_19"
2023-02-24 15:58:49 +08:00
"code.gitea.io/gitea/models/migrations/v1_20"
2023-06-13 22:28:31 +08:00
"code.gitea.io/gitea/models/migrations/v1_21"
2023-10-06 09:46:36 +02:00
"code.gitea.io/gitea/models/migrations/v1_22"
2022-11-02 16:54:36 +08:00
"code.gitea.io/gitea/models/migrations/v1_6"
"code.gitea.io/gitea/models/migrations/v1_7"
"code.gitea.io/gitea/models/migrations/v1_8"
"code.gitea.io/gitea/models/migrations/v1_9"
2022-11-10 22:22:39 +08:00
"code.gitea.io/gitea/modules/git"
2016-11-10 17:24:48 +01:00
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
2019-08-23 09:40:30 -07:00
2019-10-17 17:26:49 +08:00
"xorm.io/xorm"
2021-01-30 15:24:25 +00:00
"xorm.io/xorm/names"
2015-01-22 14:49:52 +02:00
)
2020-01-31 10:42:45 -03:00
const minDBVersion = 70 // Gitea 1.5.3
2015-02-11 21:58:37 -05:00
2016-11-28 23:44:17 +08:00
// Migration describes on migration from lower version to high version
2015-02-11 23:10:30 -05:00
type Migration interface {
Description ( ) string
Migrate ( * xorm . Engine ) error
}
type migration struct {
description string
migrate func ( * xorm . Engine ) error
}
2016-11-28 23:44:17 +08:00
// NewMigration creates a new migration
2015-02-11 23:10:30 -05:00
func NewMigration ( desc string , fn func ( * xorm . Engine ) error ) Migration {
return & migration { desc , fn }
}
2016-11-28 23:44:17 +08:00
// Description returns the migration's description
2015-02-11 23:10:30 -05:00
func ( m * migration ) Description ( ) string {
return m . description
}
2016-11-28 23:44:17 +08:00
// Migrate executes the migration
2015-02-11 23:10:30 -05:00
func ( m * migration ) Migrate ( x * xorm . Engine ) error {
return m . migrate ( x )
}
2015-01-22 14:49:52 +02:00
2016-11-28 23:44:17 +08:00
// Version describes the version table. Should have only one row with id==1
2015-01-22 14:49:52 +02:00
type Version struct {
2016-07-16 10:08:04 +08:00
ID int64 ` xorm:"pk autoincr" `
2015-01-22 14:49:52 +02:00
Version int64
}
2022-07-01 17:04:01 +01:00
// Use noopMigration when there is a migration that has been no-oped
var noopMigration = func ( _ * xorm . Engine ) error { return nil }
2015-01-22 14:49:52 +02:00
// This is a sequence of migrations. Add new migrations to the bottom of the list.
2015-02-12 12:46:21 -05:00
// If you want to "retire" a migration, remove it from the top of the list and
2016-11-28 23:44:17 +08:00
// update minDBVersion accordingly
2015-02-11 23:10:30 -05:00
var migrations = [ ] Migration {
2020-12-02 17:04:19 +01:00
// Gitea 1.5.0 ends at v69
2022-04-28 17:45:33 +02:00
2018-07-17 23:23:58 +02:00
// v70 -> v71
2022-11-02 16:54:36 +08:00
NewMigration ( "add issue_dependencies" , v1_6 . AddIssueDependencies ) ,
2018-08-06 07:43:22 +03:00
// v71 -> v72
2022-11-02 16:54:36 +08:00
NewMigration ( "protect each scratch token" , v1_6 . AddScratchHash ) ,
2018-08-06 07:43:22 +03:00
// v72 -> v73
2022-11-02 16:54:36 +08:00
NewMigration ( "add review" , v1_6 . AddReview ) ,
2020-01-31 10:42:45 -03:00
2020-12-02 17:04:19 +01:00
// Gitea 1.6.0 ends at v73
2020-01-31 10:42:45 -03:00
2018-09-13 13:04:25 +01:00
// v73 -> v74
2022-11-02 16:54:36 +08:00
NewMigration ( "add must_change_password column for users table" , v1_7 . AddMustChangePassword ) ,
2018-12-11 12:28:37 +01:00
// v74 -> v75
2022-11-02 16:54:36 +08:00
NewMigration ( "add approval whitelists to protected branches" , v1_7 . AddApprovalWhitelistsToProtectedBranches ) ,
2018-12-19 00:26:26 +08:00
// v75 -> v76
2022-11-02 16:54:36 +08:00
NewMigration ( "clear nonused data which not deleted when user was deleted" , v1_7 . ClearNonusedData ) ,
2020-01-31 10:42:45 -03:00
2020-12-02 17:04:19 +01:00
// Gitea 1.7.0 ends at v76
2020-01-31 10:42:45 -03:00
2018-12-27 11:27:08 +01:00
// v76 -> v77
2022-11-02 16:54:36 +08:00
NewMigration ( "add pull request rebase with merge commit" , v1_8 . AddPullRequestRebaseWithMerge ) ,
2019-01-09 18:22:57 +01:00
// v77 -> v78
2022-11-02 16:54:36 +08:00
NewMigration ( "add theme to users" , v1_8 . AddUserDefaultTheme ) ,
2019-01-18 00:01:04 +00:00
// v78 -> v79
2022-11-02 16:54:36 +08:00
NewMigration ( "rename repo is_bare to repo is_empty" , v1_8 . RenameRepoIsBareToIsEmpty ) ,
2019-02-10 20:27:19 +01:00
// v79 -> v80
2022-11-02 16:54:36 +08:00
NewMigration ( "add can close issues via commit in any branch" , v1_8 . AddCanCloseIssuesViaCommitInAnyBranch ) ,
2019-02-18 21:55:04 +01:00
// v80 -> v81
2022-11-02 16:54:36 +08:00
NewMigration ( "add is locked to issues" , v1_8 . AddIsLockedToIssues ) ,
2019-03-05 02:34:52 +00:00
// v81 -> v82
2022-11-02 16:54:36 +08:00
NewMigration ( "update U2F counter type" , v1_8 . ChangeU2FCounterType ) ,
2020-01-31 10:42:45 -03:00
2020-12-02 17:04:19 +01:00
// Gitea 1.8.0 ends at v82
2020-01-31 10:42:45 -03:00
2019-03-11 11:44:58 +08:00
// v82 -> v83
2022-11-02 16:54:36 +08:00
NewMigration ( "hot fix for wrong release sha1 on release table" , v1_9 . FixReleaseSha1OnReleaseTable ) ,
2019-04-03 03:25:05 +08:00
// v83 -> v84
2022-11-02 16:54:36 +08:00
NewMigration ( "add uploader id for table attachment" , v1_9 . AddUploaderIDForAttachment ) ,
2019-04-14 18:43:56 +02:00
// v84 -> v85
2022-11-02 16:54:36 +08:00
NewMigration ( "add table to store original imported gpg keys" , v1_9 . AddGPGKeyImport ) ,
2019-05-04 11:45:34 -04:00
// v85 -> v86
2022-11-02 16:54:36 +08:00
NewMigration ( "hash application token" , v1_9 . HashAppToken ) ,
2019-05-05 20:09:02 +02:00
// v86 -> v87
2022-11-02 16:54:36 +08:00
NewMigration ( "add http method to webhook" , v1_9 . AddHTTPMethodToWebhook ) ,
2019-05-30 05:22:26 +03:00
// v87 -> v88
2022-11-02 16:54:36 +08:00
NewMigration ( "add avatar field to repository" , v1_9 . AddAvatarFieldToRepository ) ,
2020-01-31 10:42:45 -03:00
2020-12-02 17:04:19 +01:00
// Gitea 1.9.0 ends at v88
2020-01-31 10:42:45 -03:00
2019-06-30 15:57:59 +08:00
// v88 -> v89
2022-11-02 16:54:36 +08:00
NewMigration ( "add commit status context field to commit_status" , v1_10 . AddCommitStatusContext ) ,
2019-07-07 22:14:12 -04:00
// v89 -> v90
2022-11-02 16:54:36 +08:00
NewMigration ( "add original author/url migration info to issues, comments, and repo " , v1_10 . AddOriginalMigrationInfo ) ,
2019-07-29 11:29:42 +08:00
// v90 -> v91
2022-11-02 16:54:36 +08:00
NewMigration ( "change length of some repository columns" , v1_10 . ChangeSomeColumnsLengthOfRepo ) ,
2019-08-05 22:29:40 +08:00
// v91 -> v92
2022-11-02 16:54:36 +08:00
NewMigration ( "add index on owner_id of repository and type, review_id of comment" , v1_10 . AddIndexOnRepositoryAndComment ) ,
2019-08-06 05:57:55 -03:00
// v92 -> v93
2022-11-02 16:54:36 +08:00
NewMigration ( "remove orphaned repository index statuses" , v1_10 . RemoveLingeringIndexStatus ) ,
2019-08-29 14:05:42 +00:00
// v93 -> v94
2022-11-02 16:54:36 +08:00
NewMigration ( "add email notification enabled preference to user" , v1_10 . AddEmailNotificationEnabledToUser ) ,
2019-09-18 13:39:45 +08:00
// v94 -> v95
2022-11-02 16:54:36 +08:00
NewMigration ( "add enable_status_check, status_check_contexts to protected_branch" , v1_10 . AddStatusCheckColumnsForProtectedBranches ) ,
2019-09-20 02:45:38 -03:00
// v95 -> v96
2022-11-02 16:54:36 +08:00
NewMigration ( "add table columns for cross referencing issues" , v1_10 . AddCrossReferenceColumns ) ,
2019-09-22 10:05:48 +01:00
// v96 -> v97
2022-11-02 16:54:36 +08:00
NewMigration ( "delete orphaned attachments" , v1_10 . DeleteOrphanedAttachments ) ,
2019-09-23 22:08:03 +02:00
// v97 -> v98
2022-11-02 16:54:36 +08:00
NewMigration ( "add repo_admin_change_team_access to user" , v1_10 . AddRepoAdminChangeTeamAccessColumnForUser ) ,
2019-10-05 19:09:27 +08:00
// v98 -> v99
2022-11-02 16:54:36 +08:00
NewMigration ( "add original author name and id on migrated release" , v1_10 . AddOriginalAuthorOnMigratedReleases ) ,
2019-10-13 21:23:14 +08:00
// v99 -> v100
2022-11-02 16:54:36 +08:00
NewMigration ( "add task table and status column for repository table" , v1_10 . AddTaskTable ) ,
2019-10-14 14:10:42 +08:00
// v100 -> v101
2022-11-02 16:54:36 +08:00
NewMigration ( "update migration repositories' service type" , v1_10 . UpdateMigrationServiceTypes ) ,
2019-10-17 23:58:36 -07:00
// v101 -> v102
2022-11-02 16:54:36 +08:00
NewMigration ( "change length of some external login users columns" , v1_10 . ChangeSomeColumnsLengthOfExternalLoginUser ) ,
2020-12-02 17:04:19 +01:00
// Gitea 1.10.0 ends at v102
2019-10-18 19:13:31 +08:00
// v102 -> v103
2022-11-02 16:54:36 +08:00
NewMigration ( "update migration repositories' service type" , v1_11 . DropColumnHeadUserNameOnPullRequest ) ,
2019-10-21 09:21:45 +01:00
// v103 -> v104
2022-11-02 16:54:36 +08:00
NewMigration ( "Add WhitelistDeployKeys to protected branch" , v1_11 . AddWhitelistDeployKeysToBranches ) ,
2019-10-23 08:48:32 -03:00
// v104 -> v105
2022-11-02 16:54:36 +08:00
NewMigration ( "remove unnecessary columns from label" , v1_11 . RemoveLabelUneededCols ) ,
2019-11-06 10:37:14 +01:00
// v105 -> v106
2022-11-02 16:54:36 +08:00
NewMigration ( "add includes_all_repositories to teams" , v1_11 . AddTeamIncludesAllRepositories ) ,
2019-11-10 06:22:19 -03:00
// v106 -> v107
2022-11-02 16:54:36 +08:00
NewMigration ( "add column `mode` to table watch" , v1_11 . AddModeColumnToWatch ) ,
2019-11-11 09:15:29 -06:00
// v107 -> v108
2022-11-02 16:54:36 +08:00
NewMigration ( "Add template options to repository" , v1_11 . AddTemplateToRepo ) ,
2019-11-12 16:33:34 +08:00
// v108 -> v109
2022-11-02 16:54:36 +08:00
NewMigration ( "Add comment_id on table notification" , v1_11 . AddCommentIDOnNotification ) ,
2019-11-20 12:27:49 +01:00
// v109 -> v110
2022-11-02 16:54:36 +08:00
NewMigration ( "add can_create_org_repo to team" , v1_11 . AddCanCreateOrgRepoColumnForTeam ) ,
2019-12-02 19:32:40 +01:00
// v110 -> v111
2022-11-02 16:54:36 +08:00
NewMigration ( "change review content type to text" , v1_11 . ChangeReviewContentToText ) ,
2019-12-04 02:08:56 +01:00
// v111 -> v112
2022-11-02 16:54:36 +08:00
NewMigration ( "update branch protection for can push and whitelist enable" , v1_11 . AddBranchProtectionCanPushAndEnableWhitelist ) ,
2019-12-14 11:30:39 +08:00
// v112 -> v113
2022-11-02 16:54:36 +08:00
NewMigration ( "remove release attachments which repository deleted" , v1_11 . RemoveAttachmentMissedRepo ) ,
2019-12-16 07:20:25 +01:00
// v113 -> v114
2022-11-02 16:54:36 +08:00
NewMigration ( "new feature: change target branch of pull requests" , v1_11 . FeatureChangeTargetBranch ) ,
2019-12-19 04:49:48 -05:00
// v114 -> v115
2022-11-02 16:54:36 +08:00
NewMigration ( "Remove authentication credentials from stored URL" , v1_11 . SanitizeOriginalURL ) ,
2019-12-28 00:27:59 +06:00
// v115 -> v116
2022-11-02 16:54:36 +08:00
NewMigration ( "add user_id prefix to existing user avatar name" , v1_11 . RenameExistingUserAvatarName ) ,
2019-12-27 21:30:58 +01:00
// v116 -> v117
2022-11-02 16:54:36 +08:00
NewMigration ( "Extend TrackedTimes" , v1_11 . ExtendTrackedTimes ) ,
2020-12-02 17:04:19 +01:00
// Gitea 1.11.0 ends at v117
2020-01-03 18:47:10 +01:00
// v117 -> v118
2022-11-02 16:54:36 +08:00
NewMigration ( "Add block on rejected reviews branch protection" , v1_12 . AddBlockOnRejectedReviews ) ,
2020-01-09 02:47:45 +01:00
// v118 -> v119
2022-11-02 16:54:36 +08:00
NewMigration ( "Add commit id and stale to reviews" , v1_12 . AddReviewCommitAndStale ) ,
2020-01-10 23:35:17 +08:00
// v119 -> v120
2022-11-02 16:54:36 +08:00
NewMigration ( "Fix migrated repositories' git service type" , v1_12 . FixMigratedRepositoryServiceType ) ,
2020-01-12 17:36:21 +08:00
// v120 -> v121
2022-11-02 16:54:36 +08:00
NewMigration ( "Add owner_name on table repository" , v1_12 . AddOwnerNameOnRepository ) ,
2020-01-13 19:33:46 +02:00
// v121 -> v122
2022-11-02 16:54:36 +08:00
NewMigration ( "add is_restricted column for users table" , v1_12 . AddIsRestricted ) ,
2020-01-15 08:32:57 +00:00
// v122 -> v123
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Require Signed Commits to ProtectedBranch" , v1_12 . AddRequireSignedCommits ) ,
2020-01-15 19:14:07 +08:00
// v123 -> v124
2022-11-02 16:54:36 +08:00
NewMigration ( "Add original information for reactions" , v1_12 . AddReactionOriginals ) ,
2020-01-19 19:27:44 -03:00
// v124 -> v125
2022-11-02 16:54:36 +08:00
NewMigration ( "Add columns to user and repository" , v1_12 . AddUserRepoMissingColumns ) ,
2020-01-24 01:28:15 +08:00
// v125 -> v126
2022-11-02 16:54:36 +08:00
NewMigration ( "Add some columns on review for migration" , v1_12 . AddReviewMigrateInfo ) ,
2020-01-31 08:57:19 +02:00
// v126 -> v127
2022-11-02 16:54:36 +08:00
NewMigration ( "Fix topic repository count" , v1_12 . FixTopicRepositoryCount ) ,
2020-02-11 11:34:17 +02:00
// v127 -> v128
2022-11-02 16:54:36 +08:00
NewMigration ( "add repository code language statistics" , v1_12 . AddLanguageStats ) ,
2020-03-05 09:18:07 +02:00
// v128 -> v129
2022-11-02 16:54:36 +08:00
NewMigration ( "fix merge base for pull requests" , v1_12 . FixMergeBase ) ,
2020-03-05 16:54:50 +01:00
// v129 -> v130
2022-11-02 16:54:36 +08:00
NewMigration ( "remove dependencies from deleted repositories" , v1_12 . PurgeUnusedDependencies ) ,
2020-03-05 23:10:48 -06:00
// v130 -> v131
2022-11-02 16:54:36 +08:00
NewMigration ( "Expand webhooks for more granularity" , v1_12 . ExpandWebhooks ) ,
2020-03-08 22:08:05 +00:00
// v131 -> v132
2022-11-02 16:54:36 +08:00
NewMigration ( "Add IsSystemWebhook column to webhooks table" , v1_12 . AddSystemWebhookColumn ) ,
2020-03-27 00:26:34 +02:00
// v132 -> v133
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Branch Protection Protected Files Column" , v1_12 . AddBranchProtectionProtectedFilesColumn ) ,
2020-03-27 12:34:39 +00:00
// v133 -> v134
2022-11-02 16:54:36 +08:00
NewMigration ( "Add EmailHash Table" , v1_12 . AddEmailHashTable ) ,
2020-03-31 14:42:44 +01:00
// v134 -> v135
2022-11-02 16:54:36 +08:00
NewMigration ( "Refix merge base for merged pull requests" , v1_12 . RefixMergeBase ) ,
2020-04-17 03:00:36 +02:00
// v135 -> v136
2022-11-02 16:54:36 +08:00
NewMigration ( "Add OrgID column to Labels table" , v1_12 . AddOrgIDLabelColumn ) ,
2020-04-17 03:00:36 +02:00
// v136 -> v137
2022-11-02 16:54:36 +08:00
NewMigration ( "Add CommitsAhead and CommitsBehind Column to PullRequest Table" , v1_12 . AddCommitDivergenceToPulls ) ,
2020-04-17 03:00:36 +02:00
// v137 -> v138
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Branch Protection Block Outdated Branch" , v1_12 . AddBlockOnOutdatedBranch ) ,
2020-04-18 21:50:25 +08:00
// v138 -> v139
2022-11-02 16:54:36 +08:00
NewMigration ( "Add ResolveDoerID to Comment table" , v1_12 . AddResolveDoerIDCommentColumn ) ,
2020-05-15 00:55:43 +02:00
// v139 -> v140
2022-11-02 16:54:36 +08:00
NewMigration ( "prepend refs/heads/ to issue refs" , v1_12 . PrependRefsHeadsToIssueRefs ) ,
2020-12-02 17:04:19 +01:00
// Gitea 1.12.0 ends at v140
2020-05-30 10:46:15 +03:00
// v140 -> v141
2022-11-02 16:54:36 +08:00
NewMigration ( "Save detected language file size to database instead of percent" , v1_13 . FixLanguageStatsToSaveSize ) ,
2020-06-11 21:18:11 +01:00
// v141 -> v142
2022-11-02 16:54:36 +08:00
NewMigration ( "Add KeepActivityPrivate to User table" , v1_13 . AddKeepActivityPrivateUserColumn ) ,
2020-06-11 21:18:11 +01:00
// v142 -> v143
2022-11-02 16:54:36 +08:00
NewMigration ( "Ensure Repository.IsArchived is not null" , v1_13 . SetIsArchivedToFalse ) ,
2020-07-08 03:16:34 +08:00
// v143 -> v144
2022-11-02 16:54:36 +08:00
NewMigration ( "recalculate Stars number for all user" , v1_13 . RecalculateStars ) ,
2020-07-31 00:04:19 +02:00
// v144 -> v145
2022-11-02 16:54:36 +08:00
NewMigration ( "update Matrix Webhook http method to 'PUT'" , v1_13 . UpdateMatrixWebhookHTTPMethod ) ,
2020-08-04 14:54:29 +01:00
// v145 -> v146
2022-11-02 16:54:36 +08:00
NewMigration ( "Increase Language field to 50 in LanguageStats" , v1_13 . IncreaseLanguageField ) ,
2020-08-17 04:07:38 +01:00
// v146 -> v147
2022-11-02 16:54:36 +08:00
NewMigration ( "Add projects info to repository table" , v1_13 . AddProjectsInfo ) ,
2020-08-21 08:53:14 +01:00
// v147 -> v148
2022-11-02 16:54:36 +08:00
NewMigration ( "create review for 0 review id code comments" , v1_13 . CreateReviewsForCodeComments ) ,
2020-09-04 03:36:56 +02:00
// v148 -> v149
2022-11-02 16:54:36 +08:00
NewMigration ( "remove issue dependency comments who refer to non existing issues" , v1_13 . PurgeInvalidDependenciesComments ) ,
2020-09-05 19:38:54 +02:00
// v149 -> v150
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Created and Updated to Milestone table" , v1_13 . AddCreatedAndUpdatedToMilestones ) ,
2020-09-10 20:45:01 +01:00
// v150 -> v151
2022-11-02 16:54:36 +08:00
NewMigration ( "add primary key to repo_topic" , v1_13 . AddPrimaryKeyToRepoTopic ) ,
2020-09-15 23:02:41 +01:00
// v151 -> v152
2022-11-02 16:54:36 +08:00
NewMigration ( "set default password algorithm to Argon2" , v1_13 . SetDefaultPasswordToArgon2 ) ,
2020-09-19 17:44:55 +01:00
// v152 -> v153
2022-11-02 16:54:36 +08:00
NewMigration ( "add TrustModel field to Repository" , v1_13 . AddTrustModelToRepository ) ,
2020-10-13 03:55:13 +08:00
// v153 > v154
2022-11-02 16:54:36 +08:00
NewMigration ( "add Team review request support" , v1_13 . AddTeamReviewRequestSupport ) ,
2020-10-13 02:01:57 +02:00
// v154 > v155
2022-11-02 16:54:36 +08:00
NewMigration ( "add timestamps to Star, Label, Follow, Watch and Collaboration" , v1_13 . AddTimeStamps ) ,
2020-12-02 17:04:19 +01:00
// Gitea 1.13.0 ends at v155
2020-10-14 02:50:57 +08:00
// v155 -> v156
2022-11-02 16:54:36 +08:00
NewMigration ( "add changed_protected_files column for pull_request table" , v1_14 . AddChangedProtectedFilesPullRequestColumn ) ,
2020-10-22 01:55:25 +01:00
// v156 -> v157
2022-11-02 16:54:36 +08:00
NewMigration ( "fix publisher ID for tag releases" , v1_14 . FixPublisherIDforTagReleases ) ,
2020-10-24 15:11:30 +01:00
// v157 -> v158
2022-11-02 16:54:36 +08:00
NewMigration ( "ensure repo topics are up-to-date" , v1_14 . FixRepoTopics ) ,
2020-11-09 06:15:09 +00:00
// v158 -> v159
2022-11-02 16:54:36 +08:00
NewMigration ( "code comment replies should have the commitID of the review they are replying to" , v1_14 . UpdateCodeCommentReplies ) ,
2020-11-10 22:37:11 +00:00
// v159 -> v160
2022-11-02 16:54:36 +08:00
NewMigration ( "update reactions constraint" , v1_14 . UpdateReactionConstraint ) ,
2020-11-29 03:30:46 +08:00
// v160 -> v161
2022-11-02 16:54:36 +08:00
NewMigration ( "Add block on official review requests branch protection" , v1_14 . AddBlockOnOfficialReviewRequests ) ,
2020-12-08 18:41:14 +08:00
// v161 -> v162
2022-11-02 16:54:36 +08:00
NewMigration ( "Convert task type from int to string" , v1_14 . ConvertTaskTypeToString ) ,
2020-12-10 01:20:13 +08:00
// v162 -> v163
2022-11-02 16:54:36 +08:00
NewMigration ( "Convert webhook task type from int to string" , v1_14 . ConvertWebhookTaskTypeToString ) ,
2020-12-27 07:28:47 +08:00
// v163 -> v164
2022-11-02 16:54:36 +08:00
NewMigration ( "Convert topic name from 25 to 50" , v1_14 . ConvertTopicNameFrom25To50 ) ,
2021-01-01 17:33:27 +01:00
// v164 -> v165
2022-11-02 16:54:36 +08:00
NewMigration ( "Add scope and nonce columns to oauth2_grant table" , v1_14 . AddScopeAndNonceColumnsToOAuth2Grant ) ,
2021-01-06 23:11:23 +08:00
// v165 -> v166
2022-11-02 16:54:36 +08:00
NewMigration ( "Convert hook task type from char(16) to varchar(16) and trim the column" , v1_14 . ConvertHookTaskTypeToVarcharAndTrim ) ,
2021-01-10 19:05:18 +01:00
// v166 -> v167
2022-11-02 16:54:36 +08:00
NewMigration ( "Where Password is Valid with Empty String delete it" , v1_14 . RecalculateUserEmptyPWD ) ,
2021-01-24 10:23:05 -05:00
// v167 -> v168
2022-11-02 16:54:36 +08:00
NewMigration ( "Add user redirect" , v1_14 . AddUserRedirect ) ,
2021-01-28 23:58:33 +01:00
// v168 -> v169
2022-11-02 16:54:36 +08:00
NewMigration ( "Recreate user table to fix default values" , v1_14 . RecreateUserTableToFixDefaultValues ) ,
2021-02-08 03:09:14 +00:00
// v169 -> v170
2022-11-02 16:54:36 +08:00
NewMigration ( "Update DeleteBranch comments to set the old_ref to the commit_sha" , v1_14 . CommentTypeDeleteBranchUseOldRef ) ,
2021-02-12 01:32:25 +08:00
// v170 -> v171
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Dismissed to Review table" , v1_14 . AddDismissedReviewColumn ) ,
2021-02-12 12:01:26 +01:00
// v171 -> v172
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Sorting to ProjectBoard table" , v1_14 . AddSortingColToProjectBoard ) ,
2021-02-15 05:33:31 +00:00
// v172 -> v173
2022-11-02 16:54:36 +08:00
NewMigration ( "Add sessions table for go-chi/session" , v1_14 . AddSessionTable ) ,
2021-02-19 10:52:11 +00:00
// v173 -> v174
2022-11-02 16:54:36 +08:00
NewMigration ( "Add time_id column to Comment" , v1_14 . AddTimeIDCommentColumn ) ,
2021-03-01 01:47:30 +01:00
// v174 -> v175
2022-11-02 16:54:36 +08:00
NewMigration ( "Create repo transfer table" , v1_14 . AddRepoTransfer ) ,
2021-03-18 06:06:40 +00:00
// v175 -> v176
2022-11-02 16:54:36 +08:00
NewMigration ( "Fix Postgres ID Sequences broken by recreate-table" , v1_14 . FixPostgresIDSequences ) ,
2021-03-19 13:25:14 +00:00
// v176 -> v177
2022-11-02 16:54:36 +08:00
NewMigration ( "Remove invalid labels from comments" , v1_14 . RemoveInvalidLabels ) ,
2021-03-19 20:01:24 +01:00
// v177 -> v178
2022-11-02 16:54:36 +08:00
NewMigration ( "Delete orphaned IssueLabels" , v1_14 . DeleteOrphanedIssueLabels ) ,
2021-04-14 08:46:17 +02:00
// Gitea 1.14.0 ends at v178
2021-04-09 00:25:57 +02:00
// v178 -> v179
2022-11-02 16:54:36 +08:00
NewMigration ( "Add LFS columns to Mirror" , v1_15 . AddLFSMirrorColumns ) ,
2021-04-14 14:02:12 +02:00
// v179 -> v180
2022-11-02 16:54:36 +08:00
NewMigration ( "Convert avatar url to text" , v1_15 . ConvertAvatarURLToText ) ,
2021-05-31 08:25:47 +00:00
// v180 -> v181
2022-11-02 16:54:36 +08:00
NewMigration ( "Delete credentials from past migrations" , v1_15 . DeleteMigrationCredentials ) ,
2021-06-08 11:52:51 +08:00
// v181 -> v182
2022-11-02 16:54:36 +08:00
NewMigration ( "Always save primary email on email address table" , v1_15 . AddPrimaryEmail2EmailAddress ) ,
2021-06-14 10:22:55 +08:00
// v182 -> v183
2022-11-02 16:54:36 +08:00
NewMigration ( "Add issue resource index table" , v1_15 . AddIssueResourceIndexTable ) ,
2021-06-14 19:20:43 +02:00
// v183 -> v184
2022-11-02 16:54:36 +08:00
NewMigration ( "Create PushMirror table" , v1_15 . CreatePushMirrorTable ) ,
2021-06-16 23:02:24 +01:00
// v184 -> v185
2022-11-02 16:54:36 +08:00
NewMigration ( "Rename Task errors to message" , v1_15 . RenameTaskErrorsToMessage ) ,
2021-06-24 05:12:38 +08:00
// v185 -> v186
2022-11-02 16:54:36 +08:00
NewMigration ( "Add new table repo_archiver" , v1_15 . AddRepoArchiver ) ,
2021-06-25 16:28:55 +02:00
// v186 -> v187
2022-11-02 16:54:36 +08:00
NewMigration ( "Create protected tag table" , v1_15 . CreateProtectedTagTable ) ,
2021-06-27 21:21:09 +02:00
// v187 -> v188
2022-11-02 16:54:36 +08:00
NewMigration ( "Drop unneeded webhook related columns" , v1_15 . DropWebhookColumns ) ,
2021-07-13 14:28:07 +01:00
// v188 -> v189
2022-11-02 16:54:36 +08:00
NewMigration ( "Add key is verified to gpg key" , v1_15 . AddKeyIsVerified ) ,
2021-08-08 19:34:42 +02:00
// Gitea 1.15.0 ends at v189
2021-07-24 11:16:34 +01:00
// v189 -> v190
2022-11-02 16:54:36 +08:00
NewMigration ( "Unwrap ldap.Sources" , v1_16 . UnwrapLDAPSourceCfg ) ,
2021-07-28 17:42:56 +08:00
// v190 -> v191
2022-11-02 16:54:36 +08:00
NewMigration ( "Add agit flow pull request support" , v1_16 . AddAgitFlowPullRequest ) ,
2021-08-22 23:33:05 +08:00
// v191 -> v192
2022-11-02 16:54:36 +08:00
NewMigration ( "Alter issue/comment table TEXT fields to LONGTEXT" , v1_16 . AlterIssueAndCommentTextFieldsToLongText ) ,
2021-08-25 09:42:51 +01:00
// v192 -> v193
2022-11-02 16:54:36 +08:00
NewMigration ( "RecreateIssueResourceIndexTable to have a primary key instead of an unique index" , v1_16 . RecreateIssueResourceIndexTable ) ,
2021-09-08 23:19:30 +08:00
// v193 -> v194
2022-11-02 16:54:36 +08:00
NewMigration ( "Add repo id column for attachment table" , v1_16 . AddRepoIDForAttachment ) ,
2021-09-11 16:21:17 +02:00
// v194 -> v195
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Branch Protection Unprotected Files Column" , v1_16 . AddBranchProtectionUnprotectedFilesColumn ) ,
2021-09-23 14:42:42 +02:00
// v195 -> v196
2022-11-02 16:54:36 +08:00
NewMigration ( "Add table commit_status_index" , v1_16 . AddTableCommitStatusIndex ) ,
2021-09-29 22:53:12 +02:00
// v196 -> v197
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Color to ProjectBoard table" , v1_16 . AddColorColToProjectBoard ) ,
2021-10-09 01:03:04 +08:00
// v197 -> v198
2022-11-02 16:54:36 +08:00
NewMigration ( "Add renamed_branch table" , v1_16 . AddRenamedBranchTable ) ,
2021-10-11 06:40:03 +08:00
// v198 -> v199
2022-11-02 16:54:36 +08:00
NewMigration ( "Add issue content history table" , v1_16 . AddTableIssueContentHistory ) ,
2021-10-16 02:14:34 -04:00
// v199 -> v200
2022-07-01 17:04:01 +01:00
NewMigration ( "No-op (remote version is using AppState now)" , noopMigration ) ,
2021-10-21 17:22:43 +08:00
// v200 -> v201
2022-11-02 16:54:36 +08:00
NewMigration ( "Add table app_state" , v1_16 . AddTableAppState ) ,
2021-10-22 00:10:49 +08:00
// v201 -> v202
2022-11-02 16:54:36 +08:00
NewMigration ( "Drop table remote_version (if exists)" , v1_16 . DropTableRemoteVersion ) ,
2021-11-22 04:47:23 -05:00
// v202 -> v203
2022-11-02 16:54:36 +08:00
NewMigration ( "Create key/value table for user settings" , v1_16 . CreateUserSettingsTable ) ,
2021-12-08 07:57:18 +01:00
// v203 -> v204
2022-11-02 16:54:36 +08:00
NewMigration ( "Add Sorting to ProjectIssue table" , v1_16 . AddProjectIssueSorting ) ,
2021-12-19 06:37:18 +01:00
// v204 -> v205
2022-11-02 16:54:36 +08:00
NewMigration ( "Add key is verified to ssh key" , v1_16 . AddSSHKeyIsVerified ) ,
2022-01-04 15:13:52 +00:00
// v205 -> v206
2022-11-02 16:54:36 +08:00
NewMigration ( "Migrate to higher varchar on user struct" , v1_16 . MigrateUserPasswordSalt ) ,
2022-01-05 11:37:00 +08:00
// v206 -> v207
2022-11-02 16:54:36 +08:00
NewMigration ( "Add authorize column to team_unit table" , v1_16 . AddAuthorizeColForTeamUnit ) ,
2022-01-14 23:03:31 +08:00
// v207 -> v208
2022-11-02 16:54:36 +08:00
NewMigration ( "Add webauthn table and migrate u2f data to webauthn - NO-OPED" , v1_16 . AddWebAuthnCred ) ,
2022-01-15 16:52:56 +00:00
// v208 -> v209
2022-11-02 16:54:36 +08:00
NewMigration ( "Use base32.HexEncoding instead of base64 encoding for cred ID as it is case insensitive - NO-OPED" , v1_16 . UseBase32HexForCredIDInWebAuthnCredential ) ,
2022-02-13 21:19:12 +00:00
// v209 -> v210
2022-11-02 16:54:36 +08:00
NewMigration ( "Increase WebAuthentication CredentialID size to 410 - NO-OPED" , v1_16 . IncreaseCredentialIDTo410 ) ,
2022-02-16 21:03:58 +00:00
// v210 -> v211
2022-11-02 16:54:36 +08:00
NewMigration ( "v208 was completely broken - remigrate" , v1_16 . RemigrateU2FCredentials ) ,
2022-03-17 19:04:36 +01:00
// Gitea 1.16.2 ends at v211
2022-03-17 22:38:35 +05:30
// v211 -> v212
2022-11-02 16:54:36 +08:00
NewMigration ( "Create ForeignReference table" , v1_17 . CreateForeignReferenceTable ) ,
2022-03-30 10:42:47 +02:00
// v212 -> v213
2022-11-02 16:54:36 +08:00
NewMigration ( "Add package tables" , v1_17 . AddPackageTables ) ,
2022-04-28 17:45:33 +02:00
// v213 -> v214
2022-11-02 16:54:36 +08:00
NewMigration ( "Add allow edits from maintainers to PullRequest table" , v1_17 . AddAllowMaintainerEdit ) ,
2022-05-07 19:05:52 +02:00
// v214 -> v215
2022-11-02 16:54:36 +08:00
NewMigration ( "Add auto merge table" , v1_17 . AddAutoMergeTable ) ,
2022-05-07 20:28:10 +02:00
// v215 -> v216
2022-11-02 16:54:36 +08:00
NewMigration ( "allow to view files in PRs" , v1_17 . AddReviewViewedFiles ) ,
2022-06-18 09:46:50 +01:00
// v216 -> v217
2022-07-01 17:04:01 +01:00
NewMigration ( "No-op (Improve Action table indices v1)" , noopMigration ) ,
2022-06-19 20:47:04 +02:00
// v217 -> v218
2022-11-02 16:54:36 +08:00
NewMigration ( "Alter hook_task table TEXT fields to LONGTEXT" , v1_17 . AlterHookTaskTextFieldsToLongText ) ,
2022-07-01 17:04:01 +01:00
// v218 -> v219
2022-11-02 16:54:36 +08:00
NewMigration ( "Improve Action table indices v2" , v1_17 . ImproveActionTableIndices ) ,
2022-07-08 15:45:12 -04:00
// v219 -> v220
2022-11-02 16:54:36 +08:00
NewMigration ( "Add sync_on_commit column to push_mirror table" , v1_17 . AddSyncOnCommitColForPushMirror ) ,
2022-07-28 05:59:39 +02:00
// v220 -> v221
2022-11-02 16:54:36 +08:00
NewMigration ( "Add container repository property" , v1_17 . AddContainerRepositoryProperty ) ,
2022-07-30 14:25:26 +01:00
// v221 -> v222
2022-11-02 16:54:36 +08:00
NewMigration ( "Store WebAuthentication CredentialID as bytes and increase size to at least 1024" , v1_17 . StoreWebauthnCredentialIDAsBytes ) ,
2022-07-30 14:25:26 +01:00
// v222 -> v223
2022-11-02 16:54:36 +08:00
NewMigration ( "Drop old CredentialID column" , v1_17 . DropOldCredentialIDColumn ) ,
2022-07-30 14:25:26 +01:00
// v223 -> v224
2022-11-02 16:54:36 +08:00
NewMigration ( "Rename CredentialIDBytes column to CredentialID" , v1_17 . RenameCredentialIDBytes ) ,
2022-08-22 14:32:28 +01:00
// Gitea 1.17.0 ends at v224
2022-08-18 13:38:59 +08:00
// v224 -> v225
2022-11-02 16:54:36 +08:00
NewMigration ( "Add badges to users" , v1_18 . CreateUserBadgesTable ) ,
2022-08-22 14:32:28 +01:00
// v225 -> v226
2022-11-02 16:54:36 +08:00
NewMigration ( "Alter gpg_key/public_key content TEXT fields to MEDIUMTEXT" , v1_18 . AlterPublicGPGKeyContentFieldsToMediumText ) ,
2022-10-07 06:22:05 +02:00
// v226 -> v227
2022-11-02 16:54:36 +08:00
NewMigration ( "Conan and generic packages do not need to be semantically versioned" , v1_18 . FixPackageSemverField ) ,
2022-10-17 07:29:26 +08:00
// v227 -> v228
2022-11-02 16:54:36 +08:00
NewMigration ( "Create key/value table for system settings" , v1_18 . CreateSystemSettingsTable ) ,
2022-10-19 14:40:28 +02:00
// v228 -> v229
2022-11-02 16:54:36 +08:00
NewMigration ( "Add TeamInvite table" , v1_18 . AddTeamInviteTable ) ,
2022-10-22 10:08:10 -05:00
// v229 -> v230
2022-11-02 16:54:36 +08:00
NewMigration ( "Update counts of all open milestones" , v1_18 . UpdateOpenMilestoneCounts ) ,
2022-10-24 09:59:24 +02:00
// v230 -> v231
2022-11-02 16:54:36 +08:00
NewMigration ( "Add ConfidentialClient column (default true) to OAuth2Application table" , v1_18 . AddConfidentialClientColumnToOAuth2ApplicationTable ) ,
2023-01-16 19:50:53 +00:00
// Gitea 1.18.0 ends at v231
2022-10-28 19:05:39 +08:00
// v231 -> v232
2022-11-02 16:54:36 +08:00
NewMigration ( "Add index for hook_task" , v1_19 . AddIndexForHookTask ) ,
2022-11-03 08:28:46 +01:00
// v232 -> v233
NewMigration ( "Alter package_version.metadata_json to LONGTEXT" , v1_19 . AlterPackageVersionMetadataToLongText ) ,
2022-11-03 19:23:20 +01:00
// v233 -> v234
NewMigration ( "Add header_authorization_encrypted column to webhook table" , v1_19 . AddHeaderAuthorizationEncryptedColWebhook ) ,
2022-11-20 15:08:38 +01:00
// v234 -> v235
NewMigration ( "Add package cleanup rule table" , v1_19 . CreatePackageCleanupRuleTable ) ,
2022-11-24 10:49:41 +08:00
// v235 -> v236
NewMigration ( "Add index for access_token" , v1_19 . AddIndexForAccessToken ) ,
2022-12-20 17:07:13 +08:00
// v236 -> v237
NewMigration ( "Create secrets table" , v1_19 . CreateSecretsTable ) ,
2022-12-23 19:35:43 +08:00
// v237 -> v238
NewMigration ( "Drop ForeignReference table" , v1_19 . DropForeignReferenceTable ) ,
2023-01-16 19:50:53 +00:00
// v238 -> v239
NewMigration ( "Add updated unix to LFSMetaObject" , v1_19 . AddUpdatedUnixToLFSMetaObject ) ,
2023-01-17 16:46:03 -05:00
// v239 -> v240
NewMigration ( "Add scope for access_token" , v1_19 . AddScopeForAccessTokens ) ,
2023-01-31 09:45:19 +08:00
// v240 -> v241
NewMigration ( "Add actions tables" , v1_19 . AddActionsTables ) ,
2023-02-11 00:12:41 -08:00
// v241 -> v242
NewMigration ( "Add card_type column to project table" , v1_19 . AddCardTypeToProjectTable ) ,
2023-02-16 18:08:40 +00:00
// v242 -> v243
NewMigration ( "Alter gpg_key_import content TEXT field to MEDIUMTEXT" , v1_19 . AlterPublicGPGKeyImportContentFieldToMediumText ) ,
2023-02-18 20:17:39 +01:00
// v243 -> v244
NewMigration ( "Add exclusive label" , v1_19 . AddExclusiveLabel ) ,
2023-02-20 04:30:36 +02:00
// Gitea 1.19.0 ends at v244
2023-02-24 15:58:49 +08:00
// v244 -> v245
NewMigration ( "Add NeedApproval to actions tables" , v1_20 . AddNeedApprovalToActionRun ) ,
2023-03-10 15:28:32 +01:00
// v245 -> v246
NewMigration ( "Rename Webhook org_id to owner_id" , v1_20 . RenameWebhookOrgToOwner ) ,
2023-03-15 17:33:10 +08:00
// v246 -> v247
NewMigration ( "Add missed column owner_id for project table" , v1_20 . AddNewColumnForProject ) ,
2023-03-17 22:07:23 +09:00
// v247 -> v248
NewMigration ( "Fix incorrect project type" , v1_20 . FixIncorrectProjectType ) ,
2023-03-20 10:19:40 +08:00
// v248 -> v249
NewMigration ( "Add version column to action_runner table" , v1_20 . AddVersionToActionRunner ) ,
2023-03-24 23:44:33 +08:00
// v249 -> v250
NewMigration ( "Improve Action table indices v3" , v1_20 . ImproveActionTableIndices ) ,
2023-04-02 11:53:37 +02:00
// v250 -> v251
NewMigration ( "Change Container Metadata" , v1_20 . ChangeContainerMetadataMultiArch ) ,
2023-04-03 23:36:35 +09:00
// v251 -> v252
NewMigration ( "Fix incorrect owner team unit access mode" , v1_20 . FixIncorrectOwnerTeamUnitAccessMode ) ,
2023-04-14 04:06:10 +09:00
// v252 -> v253
NewMigration ( "Fix incorrect admin team unit access mode" , v1_20 . FixIncorrectAdminTeamUnitAccessMode ) ,
2023-04-15 22:52:44 +09:00
// v253 -> v254
NewMigration ( "Fix ExternalTracker and ExternalWiki accessMode in owner and admin team" , v1_20 . FixExternalTrackerAndExternalWikiAccessModeInOwnerAndAdminTeam ) ,
2023-04-23 04:12:41 +08:00
// v254 -> v255
NewMigration ( "Add ActionTaskOutput table" , v1_20 . AddActionTaskOutputTable ) ,
2023-04-26 16:46:26 +02:00
// v255 -> v256
NewMigration ( "Add ArchivedUnix Column" , v1_20 . AddArchivedUnixToRepository ) ,
2023-05-02 18:31:35 +02:00
// v256 -> v257
NewMigration ( "Add is_internal column to package" , v1_20 . AddIsInternalColumnToPackage ) ,
2023-05-19 21:37:57 +08:00
// v257 -> v258
NewMigration ( "Add Actions Artifact table" , v1_20 . CreateActionArtifactTable ) ,
2023-06-14 21:35:35 +09:00
// v258 -> v259
2023-05-25 15:17:19 +02:00
NewMigration ( "Add PinOrder Column" , v1_20 . AddPinOrderToIssue ) ,
2023-06-14 21:35:35 +09:00
// v259 -> v260
2023-06-04 14:57:16 -04:00
NewMigration ( "Convert scoped access tokens" , v1_20 . ConvertScopedAccessTokens ) ,
2023-06-13 22:28:31 +08:00
2023-06-14 12:46:55 +08:00
// Gitea 1.20.0 ends at 260
2023-06-13 22:28:31 +08:00
// v260 -> v261
2023-06-14 12:46:55 +08:00
NewMigration ( "Drop custom_labels column of action_runner table" , v1_21 . DropCustomLabelsColumnOfActionRunner ) ,
2023-06-21 06:54:15 +08:00
// v261 -> v262
NewMigration ( "Add variable table" , v1_21 . CreateVariableTable ) ,
2023-06-26 14:33:18 +08:00
// v262 -> v263
NewMigration ( "Add TriggerEvent to action_run table" , v1_21 . AddTriggerEventToActionRun ) ,
2023-06-29 06:41:02 +08:00
// v263 -> v264
NewMigration ( "Add git_size and lfs_size columns to repository table" , v1_21 . AddGitSizeAndLFSSizeToRepositoryTable ) ,
2023-06-29 18:03:20 +08:00
// v264 -> v265
NewMigration ( "Add branch table" , v1_21 . AddBranchTable ) ,
2023-07-21 10:42:01 +08:00
// v265 -> v266
NewMigration ( "Alter Actions Artifact table" , v1_21 . AlterActionArtifactTable ) ,
2023-07-21 16:24:36 +08:00
// v266 -> v267
NewMigration ( "Reduce commit status" , v1_21 . ReduceCommitStatus ) ,
2023-07-24 14:11:27 +08:00
// v267 -> v268
NewMigration ( "Add action_tasks_version table" , v1_21 . CreateActionTasksVersionTable ) ,
2023-07-25 11:15:55 +08:00
// v268 -> v269
NewMigration ( "Update Action Ref" , v1_21 . UpdateActionsRefIndex ) ,
2023-07-26 09:41:33 +09:00
// v269 -> v270
NewMigration ( "Drop deleted branch table" , v1_21 . DropDeletedBranchTable ) ,
2023-07-31 01:54:22 +02:00
// v270 -> v271
NewMigration ( "Fix PackageProperty typo" , v1_21 . FixPackagePropertyTypo ) ,
2023-08-14 15:26:14 +05:30
// v271 -> v272
NewMigration ( "Allow archiving labels" , v1_21 . AddArchivedUnixColumInLabelTable ) ,
2023-08-21 22:07:52 +08:00
// v272 -> v273
NewMigration ( "Add Version to ActionRun table" , v1_21 . AddVersionToActionRunTable ) ,
2023-08-24 11:06:51 +08:00
// v273 -> v274
NewMigration ( "Add Action Schedule Table" , v1_21 . AddActionScheduleTable ) ,
2023-09-06 15:41:06 +08:00
// v274 -> v275
NewMigration ( "Add Actions artifacts expiration date" , v1_21 . AddExpiredUnixColumnInActionArtifactTable ) ,
2023-09-08 23:01:19 +08:00
// v275 -> v276
NewMigration ( "Add ScheduleID for ActionRun" , v1_21 . AddScheduleIDForActionRun ) ,
2023-09-16 18:03:02 +02:00
// v276 -> v277
NewMigration ( "Add RemoteAddress to mirrors" , v1_21 . AddRemoteAddressToMirrors ) ,
2023-09-21 03:30:48 +02:00
// v277 -> v278
NewMigration ( "Add Index to issue_user.issue_id" , v1_21 . AddIndexToIssueUserIssueID ) ,
2023-09-28 22:58:35 +02:00
// v278 -> v279
NewMigration ( "Add Index to comment.dependent_issue_id" , v1_21 . AddIndexToCommentDependentIssueID ) ,
2023-10-04 03:41:25 +02:00
// v279 -> v280
NewMigration ( "Add Index to action.user_id" , v1_21 . AddIndexToActionUserID ) ,
2023-10-06 09:46:36 +02:00
// Gitea 1.21.0 ends at 280
// v280 -> v281
NewMigration ( "Rename user themes" , v1_22 . RenameUserThemes ) ,
2023-10-14 02:56:41 +02:00
// v281 -> v282
NewMigration ( "Add auth_token table" , v1_22 . CreateAuthTokenTable ) ,
2023-10-30 09:39:29 +01:00
// v282 -> v283
NewMigration ( "Add Index to pull_auto_merge.doer_id" , v1_22 . AddIndexToPullAutoMergeDoerID ) ,
2023-12-14 10:26:59 +01:00
// v283 -> v284
NewMigration ( "Add combined Index to issue_user.uid and issue_id" , v1_22 . AddCombinedIndexToIssueUser ) ,
2024-01-17 17:26:45 +08:00
// v284 -> v285
NewMigration ( "Add ignore stale approval column on branch table" , v1_22 . AddIgnoreStaleApprovalsColumnToProtectedBranchTable ) ,
2024-01-19 23:05:49 +09:00
// v285 -> v286
NewMigration ( "Add PreviousDuration to ActionRun" , v1_22 . AddPreviousDurationToActionRun ) ,
2024-01-19 16:05:02 +00:00
// v286 -> v287
NewMigration ( "Add support for SHA256 git repositories" , v1_22 . AdjustDBForSha256 ) ,
2015-01-23 09:54:16 +02:00
}
2015-01-22 14:49:52 +02:00
2020-04-06 11:44:47 +01:00
// GetCurrentDBVersion returns the current db version
func GetCurrentDBVersion ( x * xorm . Engine ) ( int64 , error ) {
if err := x . Sync ( new ( Version ) ) ; err != nil {
2022-10-24 21:29:17 +02:00
return - 1 , fmt . Errorf ( "sync: %w" , err )
2020-04-06 11:44:47 +01:00
}
currentVersion := & Version { ID : 1 }
has , err := x . Get ( currentVersion )
if err != nil {
2022-10-24 21:29:17 +02:00
return - 1 , fmt . Errorf ( "get: %w" , err )
2020-04-06 11:44:47 +01:00
}
if ! has {
return - 1 , nil
}
return currentVersion . Version , nil
}
// ExpectedVersion returns the expected db version
func ExpectedVersion ( ) int64 {
return int64 ( minDBVersion + len ( migrations ) )
}
// EnsureUpToDate will check if the db is at the correct version
func EnsureUpToDate ( x * xorm . Engine ) error {
currentDB , err := GetCurrentDBVersion ( x )
if err != nil {
return err
}
if currentDB < 0 {
2022-06-13 16:34:46 +09:00
return fmt . Errorf ( "Database has not been initialized" )
2020-04-06 11:44:47 +01:00
}
if minDBVersion > currentDB {
return fmt . Errorf ( "DB version %d (<= %d) is too old for auto-migration. Upgrade to Gitea 1.6.4 first then upgrade to this version" , currentDB , minDBVersion )
}
expected := ExpectedVersion ( )
if currentDB != expected {
return fmt . Errorf ( ` Current database version %d is not equal to the expected version %d. Please run "gitea [--config /path/to/app.ini] migrate" to update the database version ` , currentDB , expected )
}
return nil
}
2015-01-22 14:49:52 +02:00
// Migrate database to current version
func Migrate ( x * xorm . Engine ) error {
2021-01-30 15:24:25 +00:00
// Set a new clean the default mapper to GonicMapper as that is the default for Gitea.
x . SetMapper ( names . GonicMapper { } )
2015-01-22 15:01:45 +02:00
if err := x . Sync ( new ( Version ) ) ; err != nil {
2022-10-24 21:29:17 +02:00
return fmt . Errorf ( "sync: %w" , err )
2015-01-22 15:01:45 +02:00
}
2015-01-22 14:49:52 +02:00
2016-07-16 10:08:04 +08:00
currentVersion := & Version { ID : 1 }
2015-01-22 14:49:52 +02:00
has , err := x . Get ( currentVersion )
if err != nil {
2022-10-24 21:29:17 +02:00
return fmt . Errorf ( "get: %w" , err )
2015-01-22 14:56:50 +02:00
} else if ! has {
2015-12-10 19:52:06 -05:00
// If the version record does not exist we think
// it is a fresh installation and we can skip all migrations.
2016-12-24 09:37:35 +08:00
currentVersion . ID = 0
2016-11-28 23:44:17 +08:00
currentVersion . Version = int64 ( minDBVersion + len ( migrations ) )
2015-01-23 09:54:16 +02:00
2015-01-22 14:56:50 +02:00
if _ , err = x . InsertOne ( currentVersion ) ; err != nil {
2022-10-24 21:29:17 +02:00
return fmt . Errorf ( "insert: %w" , err )
2015-01-22 14:56:50 +02:00
}
2015-01-22 14:49:52 +02:00
}
v := currentVersion . Version
2016-11-28 23:44:17 +08:00
if minDBVersion > v {
2019-04-02 08:48:31 +01:00
log . Fatal ( ` Gitea no longer supports auto-migration from your previously installed version.
2020-01-31 10:42:45 -03:00
Please try upgrading to a lower version first (suggested v1.6.4), then upgrade to this version. ` )
2015-11-25 09:27:27 -05:00
return nil
}
2020-10-13 02:41:49 +02:00
// Downgrading Gitea's database version not supported
2016-11-28 23:44:17 +08:00
if int ( v - minDBVersion ) > len ( migrations ) {
2022-04-27 00:01:42 +08:00
msg := fmt . Sprintf ( "Your database (migration version: %d) is for a newer Gitea, you can not use the newer database for this old Gitea release (%d)." , v , minDBVersion + len ( migrations ) )
2022-02-07 18:04:12 +08:00
msg += "\nGitea will exit to keep your database safe and unchanged. Please use the correct Gitea release, do not change the migration version manually (incorrect manual operation may lose data)."
if ! setting . IsProd {
msg += fmt . Sprintf ( "\nIf you are in development and really know what you're doing, you can force changing the migration version by executing: UPDATE version SET version=%d WHERE id=1;" , minDBVersion + len ( migrations ) )
}
2023-08-13 20:49:30 +08:00
log . Fatal ( "Migration Error: %s" , msg )
2020-10-12 16:35:56 +02:00
return nil
2015-08-10 22:59:12 +08:00
}
2020-10-12 16:35:56 +02:00
2022-11-10 22:22:39 +08:00
// Some migration tasks depend on the git command
if git . DefaultContext == nil {
if err = git . InitSimple ( context . Background ( ) ) ; err != nil {
return err
}
}
2020-10-12 16:35:56 +02:00
// Migrate
2016-11-28 23:44:17 +08:00
for i , m := range migrations [ v - minDBVersion : ] {
2019-05-06 00:42:29 +01:00
log . Info ( "Migration[%d]: %s" , v + int64 ( i ) , m . Description ( ) )
2021-01-30 15:24:25 +00:00
// Reset the mapper between each migration - migrations are not supposed to depend on each other
x . SetMapper ( names . GonicMapper { } )
2015-02-11 23:10:30 -05:00
if err = m . Migrate ( x ) ; err != nil {
2022-10-24 21:29:17 +02:00
return fmt . Errorf ( "migration[%d]: %s failed: %w" , v + int64 ( i ) , m . Description ( ) , err )
2015-01-22 14:49:52 +02:00
}
currentVersion . Version = v + int64 ( i ) + 1
2017-10-04 21:43:04 -07:00
if _ , err = x . ID ( 1 ) . Update ( currentVersion ) ; err != nil {
2015-01-22 15:01:45 +02:00
return err
}
2015-01-22 14:49:52 +02:00
}
return nil
}