Add Reindex buttons to repository settings page (#17494)
This PR adds reindexing request buttons to the repository settings page. Fix #3796 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								3a3cbcfdf0
							
						
					
				
			
			
				commit
				
					
						e0e3ba6c12
					
				
			
		
					 4 changed files with 95 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1726,6 +1726,12 @@ settings.pulls.default_delete_branch_after_merge = Delete pull request branch af
 | 
			
		|||
settings.projects_desc = Enable Repository Projects
 | 
			
		||||
settings.admin_settings = Administrator Settings
 | 
			
		||||
settings.admin_enable_health_check = Enable Repository Health Checks (git fsck)
 | 
			
		||||
settings.admin_code_indexer = Code Indexer
 | 
			
		||||
settings.admin_stats_indexer = Code Statistics Indexer
 | 
			
		||||
settings.admin_indexer_commit_sha = Last Indexed SHA
 | 
			
		||||
settings.admin_indexer_unindexed = Unindexed
 | 
			
		||||
settings.reindex_button = Add to Reindex Queue
 | 
			
		||||
settings.reindex_requested=Reindex Requested
 | 
			
		||||
settings.admin_enable_close_issues_via_commit_in_any_branch = Close an issue via a commit made in a non default branch
 | 
			
		||||
settings.danger_zone = Danger Zone
 | 
			
		||||
settings.new_owner_has_same_repo = The new owner already has a repository with same name. Please choose another name.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,8 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/context"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/indexer/code"
 | 
			
		||||
	"code.gitea.io/gitea/modules/indexer/stats"
 | 
			
		||||
	"code.gitea.io/gitea/modules/lfs"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/repository"
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +69,23 @@ func Settings(ctx *context.Context) {
 | 
			
		|||
	signing, _ := asymkey_service.SigningKey(ctx.Repo.Repository.RepoPath())
 | 
			
		||||
	ctx.Data["SigningKeyAvailable"] = len(signing) > 0
 | 
			
		||||
	ctx.Data["SigningSettings"] = setting.Repository.Signing
 | 
			
		||||
	ctx.Data["CodeIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
 | 
			
		||||
	if ctx.User.IsAdmin {
 | 
			
		||||
		if setting.Indexer.RepoIndexerEnabled {
 | 
			
		||||
			status, err := repo_model.GetIndexerStatus(ctx.Repo.Repository, repo_model.RepoIndexerTypeCode)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				ctx.ServerError("repo.indexer_status", err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			ctx.Data["CodeIndexerStatus"] = status
 | 
			
		||||
		}
 | 
			
		||||
		status, err := repo_model.GetIndexerStatus(ctx.Repo.Repository, repo_model.RepoIndexerTypeStats)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.ServerError("repo.indexer_status", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		ctx.Data["StatsIndexerStatus"] = status
 | 
			
		||||
	}
 | 
			
		||||
	pushMirrors, err := repo_model.GetPushMirrorsByRepoID(ctx.Repo.Repository.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.ServerError("GetPushMirrorsByRepoID", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -515,6 +534,34 @@ func SettingsPost(ctx *context.Context) {
 | 
			
		|||
		ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
 | 
			
		||||
		ctx.Redirect(ctx.Repo.RepoLink + "/settings")
 | 
			
		||||
 | 
			
		||||
	case "admin_index":
 | 
			
		||||
		if !ctx.User.IsAdmin {
 | 
			
		||||
			ctx.Error(http.StatusForbidden)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch form.RequestReindexType {
 | 
			
		||||
		case "stats":
 | 
			
		||||
			if err := stats.UpdateRepoIndexer(ctx.Repo.Repository); err != nil {
 | 
			
		||||
				ctx.ServerError("UpdateStatsRepondexer", err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		case "code":
 | 
			
		||||
			if !setting.Indexer.RepoIndexerEnabled {
 | 
			
		||||
				ctx.Error(http.StatusForbidden)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			code.UpdateRepoIndexer(ctx.Repo.Repository)
 | 
			
		||||
		default:
 | 
			
		||||
			ctx.NotFound("", nil)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		log.Trace("Repository reindex for %s requested: %s/%s", form.RequestReindexType, ctx.Repo.Owner.Name, repo.Name)
 | 
			
		||||
 | 
			
		||||
		ctx.Flash.Success(ctx.Tr("repo.settings.reindex_requested"))
 | 
			
		||||
		ctx.Redirect(ctx.Repo.RepoLink + "/settings")
 | 
			
		||||
 | 
			
		||||
	case "convert":
 | 
			
		||||
		if !ctx.Repo.IsOwner() {
 | 
			
		||||
			ctx.Error(http.StatusNotFound)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -161,7 +161,8 @@ type RepoSettingForm struct {
 | 
			
		|||
	TrustModel string
 | 
			
		||||
 | 
			
		||||
	// Admin settings
 | 
			
		||||
	EnableHealthCheck bool
 | 
			
		||||
	EnableHealthCheck  bool
 | 
			
		||||
	RequestReindexType string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Validate validates the fields
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -558,11 +558,50 @@
 | 
			
		|||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
 | 
			
		||||
				<div class="ui divider"></div>
 | 
			
		||||
				<div class="field">
 | 
			
		||||
					<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
 | 
			
		||||
				</div>
 | 
			
		||||
			</form>
 | 
			
		||||
 | 
			
		||||
			<div class="ui divider"></div>
 | 
			
		||||
			<form class="ui form" method="post">
 | 
			
		||||
				{{.CsrfTokenHtml}}
 | 
			
		||||
				<input type="hidden" name="action" value="admin_index">
 | 
			
		||||
				{{if .CodeIndexerEnabled}}
 | 
			
		||||
					<h4 class="ui header">{{.i18n.Tr "repo.settings.admin_code_indexer"}}</h4>
 | 
			
		||||
					<div class="inline fields">
 | 
			
		||||
						<label>{{.i18n.Tr "repo.settings.admin_indexer_commit_sha"}}</label>
 | 
			
		||||
						<span class="field">
 | 
			
		||||
							{{if .CodeIndexerStatus}}
 | 
			
		||||
								<a rel="nofollow" class="ui sha label" href="{{.RepoLink}}/commit/{{.CodeIndexerStatus.CommitSha}}">
 | 
			
		||||
									<span class="shortsha">{{ShortSha .CodeIndexerStatus.CommitSha}}</span>
 | 
			
		||||
								</a>
 | 
			
		||||
							{{else}}
 | 
			
		||||
									<span>{{.i18n.Tr "repo.settings.admin_indexer_unindexed"}}</span>
 | 
			
		||||
							{{end}}
 | 
			
		||||
						</span>
 | 
			
		||||
						<div class="field">
 | 
			
		||||
							<button class="ui green button" name="request_reindex_type" value="code">{{$.i18n.Tr "repo.settings.reindex_button"}}</button>
 | 
			
		||||
						</div>
 | 
			
		||||
					</div>
 | 
			
		||||
				{{end}}
 | 
			
		||||
				<h4 class="ui header">{{.i18n.Tr "repo.settings.admin_stats_indexer"}}</h4>
 | 
			
		||||
				<div class="inline fields">
 | 
			
		||||
					<label>{{.i18n.Tr "repo.settings.admin_indexer_commit_sha"}}</label>
 | 
			
		||||
					<span class="field">
 | 
			
		||||
						{{if .StatsIndexerStatus}}
 | 
			
		||||
							<a rel="nofollow" class="ui sha label" href="{{.RepoLink}}/commit/{{.StatsIndexerStatus.CommitSha}}">
 | 
			
		||||
								<span class="shortsha">{{ShortSha .StatsIndexerStatus.CommitSha}}</span>
 | 
			
		||||
							</a>
 | 
			
		||||
						{{else}}
 | 
			
		||||
							<span>{{.i18n.Tr "repo.settings.admin_indexer_unindexed"}}</span>
 | 
			
		||||
						{{end}}
 | 
			
		||||
					</span>
 | 
			
		||||
					<div class="field">
 | 
			
		||||
						<button class="ui green button" name="request_reindex_type" value="stats">{{$.i18n.Tr "repo.settings.reindex_button"}}</button>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
			</form>
 | 
			
		||||
		</div>
 | 
			
		||||
		{{end}}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue