mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Remove unit types commits and settings (#2161)
* Remove unit types commits and settings * Can not limit units in administrator teams * Limit changing units only to teams with read and write access mode * Small code optimization
This commit is contained in:
		| @@ -124,6 +124,8 @@ var migrations = []Migration{ | ||||
| 	NewMigration("regenerate git hooks", regenerateGitHooks36), | ||||
| 	// v37 -> v38 | ||||
| 	NewMigration("unescape user full names", unescapeUserFullNames), | ||||
| 	// v38 -> v39 | ||||
| 	NewMigration("remove commits and settings unit types", removeCommitsUnitType), | ||||
| } | ||||
|  | ||||
| // Migrate database to current version | ||||
|   | ||||
| @@ -26,15 +26,15 @@ type RepoUnit struct { | ||||
|  | ||||
| // Enumerate all the unit types | ||||
| const ( | ||||
| 	UnitTypeCode            = iota + 1 // 1 code | ||||
| 	UnitTypeIssues                     // 2 issues | ||||
| 	UnitTypePRs                        // 3 PRs | ||||
| 	UnitTypeCommits                    // 4 Commits | ||||
| 	UnitTypeReleases                   // 5 Releases | ||||
| 	UnitTypeWiki                       // 6 Wiki | ||||
| 	UnitTypeSettings                   // 7 Settings | ||||
| 	UnitTypeExternalWiki               // 8 ExternalWiki | ||||
| 	UnitTypeExternalTracker            // 9 ExternalTracker | ||||
| 	V16UnitTypeCode            = iota + 1 // 1 code | ||||
| 	V16UnitTypeIssues                     // 2 issues | ||||
| 	V16UnitTypePRs                        // 3 PRs | ||||
| 	V16UnitTypeCommits                    // 4 Commits | ||||
| 	V16UnitTypeReleases                   // 5 Releases | ||||
| 	V16UnitTypeWiki                       // 6 Wiki | ||||
| 	V16UnitTypeSettings                   // 7 Settings | ||||
| 	V16UnitTypeExternalWiki               // 8 ExternalWiki | ||||
| 	V16UnitTypeExternalTracker            // 9 ExternalTracker | ||||
| ) | ||||
|  | ||||
| // Repo describes a repository | ||||
| @@ -79,32 +79,32 @@ func addUnitsToTables(x *xorm.Engine) error { | ||||
|  | ||||
| 	for _, repo := range repos { | ||||
| 		for i := 1; i <= 9; i++ { | ||||
| 			if (i == UnitTypeWiki || i == UnitTypeExternalWiki) && !repo.EnableWiki { | ||||
| 			if (i == V16UnitTypeWiki || i == V16UnitTypeExternalWiki) && !repo.EnableWiki { | ||||
| 				continue | ||||
| 			} | ||||
| 			if i == UnitTypeExternalWiki && !repo.EnableExternalWiki { | ||||
| 			if i == V16UnitTypeExternalWiki && !repo.EnableExternalWiki { | ||||
| 				continue | ||||
| 			} | ||||
| 			if i == UnitTypePRs && !repo.EnablePulls { | ||||
| 			if i == V16UnitTypePRs && !repo.EnablePulls { | ||||
| 				continue | ||||
| 			} | ||||
| 			if (i == UnitTypeIssues || i == UnitTypeExternalTracker) && !repo.EnableIssues { | ||||
| 			if (i == V16UnitTypeIssues || i == V16UnitTypeExternalTracker) && !repo.EnableIssues { | ||||
| 				continue | ||||
| 			} | ||||
| 			if i == UnitTypeExternalTracker && !repo.EnableExternalTracker { | ||||
| 			if i == V16UnitTypeExternalTracker && !repo.EnableExternalTracker { | ||||
| 				continue | ||||
| 			} | ||||
|  | ||||
| 			var config = make(map[string]string) | ||||
| 			switch i { | ||||
| 			case UnitTypeExternalTracker: | ||||
| 			case V16UnitTypeExternalTracker: | ||||
| 				config["ExternalTrackerURL"] = repo.ExternalTrackerURL | ||||
| 				config["ExternalTrackerFormat"] = repo.ExternalTrackerFormat | ||||
| 				if len(repo.ExternalTrackerStyle) == 0 { | ||||
| 					repo.ExternalTrackerStyle = markdown.IssueNameStyleNumeric | ||||
| 				} | ||||
| 				config["ExternalTrackerStyle"] = repo.ExternalTrackerStyle | ||||
| 			case UnitTypeExternalWiki: | ||||
| 			case V16UnitTypeExternalWiki: | ||||
| 				config["ExternalWikiURL"] = repo.ExternalWikiURL | ||||
| 			} | ||||
|  | ||||
|   | ||||
							
								
								
									
										56
									
								
								models/migrations/v38.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								models/migrations/v38.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| // Copyright 2017 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package migrations | ||||
|  | ||||
| import ( | ||||
| 	"code.gitea.io/gitea/models" | ||||
|  | ||||
| 	"github.com/go-xorm/xorm" | ||||
| ) | ||||
|  | ||||
| func removeCommitsUnitType(x *xorm.Engine) (err error) { | ||||
| 	// Update team unit types | ||||
| 	const batchSize = 100 | ||||
| 	for start := 0; ; start += batchSize { | ||||
| 		teams := make([]*models.Team, 0, batchSize) | ||||
| 		if err := x.Limit(batchSize, start).Find(&teams); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if len(teams) == 0 { | ||||
| 			break | ||||
| 		} | ||||
| 		for _, team := range teams { | ||||
| 			ut := make([]models.UnitType, 0, len(team.UnitTypes)) | ||||
| 			for _, u := range team.UnitTypes { | ||||
| 				if u < V16UnitTypeCommits { | ||||
| 					ut = append(ut, u) | ||||
| 				} else if u > V16UnitTypeSettings { | ||||
| 					ut = append(ut, u-2) | ||||
| 				} else if u > V16UnitTypeCommits && u != V16UnitTypeSettings { | ||||
| 					ut = append(ut, u-1) | ||||
| 				} | ||||
| 			} | ||||
| 			team.UnitTypes = ut | ||||
| 			if _, err := x.Id(team.ID).Cols("unit_types").Update(team); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Delete commits and settings unit types | ||||
| 	if _, err = x.In("`type`", []models.UnitType{V16UnitTypeCommits, V16UnitTypeSettings}).Delete(new(RepoUnit)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Fix renumber unit types that where in enumeration after settings unit type | ||||
| 	if _, err = x.Where("`type` > ?", V16UnitTypeSettings).Decr("type").Decr("index").Update(new(RepoUnit)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Fix renumber unit types that where in enumeration after commits unit type | ||||
| 	if _, err = x.Where("`type` > ?", V16UnitTypeCommits).Decr("type").Decr("index").Update(new(RepoUnit)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user