Skip to content

Commit

Permalink
Add Reindex buttons to repository settings page
Browse files Browse the repository at this point in the history
This PR adds reindexing request buttons to the repository settings page.

Fix go-gitea#3796

Signed-off-by: Andrew Thornton <art27@cantab.net>
  • Loading branch information
zeripath committed Oct 31, 2021
1 parent 1ff944f commit 4def566
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 1 deletion.
6 changes: 6 additions & 0 deletions options/locale/locale_en-US.ini
Expand Up @@ -1706,6 +1706,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.
Expand Down
48 changes: 48 additions & 0 deletions routers/web/repo/setting.go
Expand Up @@ -19,6 +19,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/migrations"
Expand Down Expand Up @@ -61,6 +63,24 @@ func Settings(ctx *context.Context) {
signing, _ := models.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.Repo.IsAdmin() {
if setting.Indexer.RepoIndexerEnabled {
status, err := ctx.Repo.Repository.GetIndexerStatus(models.RepoIndexerTypeCode)
if err != nil {
ctx.ServerError("repo.indexer_status", err)
return
}
ctx.Data["CodeIndexerStatus"] = status
}
status, err := ctx.Repo.Repository.GetIndexerStatus(models.RepoIndexerTypeStats)
if err != nil {
ctx.ServerError("repo.indexer_status", err)
return
}
ctx.Data["StatsIndexerStatus"] = status
}

ctx.HTML(http.StatusOK, tplSettingsOptions)
}
Expand Down Expand Up @@ -504,6 +524,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.Index {
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.Index, 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)
Expand Down
1 change: 1 addition & 0 deletions services/forms/repo_form.go
Expand Up @@ -162,6 +162,7 @@ type RepoSettingForm struct {

// Admin settings
EnableHealthCheck bool
Index string
}

// Validate validates the fields
Expand Down
41 changes: 40 additions & 1 deletion templates/repo/settings/options.tmpl
Expand Up @@ -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="index" 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="index" value="stats">{{$.i18n.Tr "repo.settings.reindex_button"}}</button>
</div>
</div>
</form>
</div>
{{end}}

Expand Down

0 comments on commit 4def566

Please sign in to comment.