diff --git a/modules/forms/repo_form.go b/modules/forms/repo_form.go index 6cf72ee6b8..6c7c9bea13 100644 --- a/modules/forms/repo_form.go +++ b/modules/forms/repo_form.go @@ -123,34 +123,34 @@ type RepoSettingForm struct { EnablePrune bool // Advanced settings - EnableWiki bool - EnableExternalWiki bool - ExternalWikiURL string - EnableIssues bool - EnableExternalTracker bool - ExternalTrackerURL string - TrackerURLFormat string - TrackerIssueStyle string - EnableProjects bool - EnablePulls bool - PullsIgnoreWhitespace bool - PullsAllowMerge bool - PullsAllowRebase bool - PullsAllowRebaseMerge bool - PullsAllowSquash bool - PullsAllowManualMerge bool - EnableAutodetectManualMerge bool - EnableTimetracker bool - AllowOnlyContributorsToTrackTime bool - EnableIssueDependencies bool - IsArchived bool + EnableWiki bool + EnableExternalWiki bool + ExternalWikiURL string + EnableIssues bool + EnableExternalTracker bool + ExternalTrackerURL string + TrackerURLFormat string + TrackerIssueStyle string + EnableCloseIssuesViaCommitInAnyBranch bool + EnableProjects bool + EnablePulls bool + PullsIgnoreWhitespace bool + PullsAllowMerge bool + PullsAllowRebase bool + PullsAllowRebaseMerge bool + PullsAllowSquash bool + PullsAllowManualMerge bool + EnableAutodetectManualMerge bool + EnableTimetracker bool + AllowOnlyContributorsToTrackTime bool + EnableIssueDependencies bool + IsArchived bool // Signing Settings TrustModel string // Admin settings - EnableHealthCheck bool - EnableCloseIssuesViaCommitInAnyBranch bool + EnableHealthCheck bool } // Validate validates the fields diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 6b31ac4c71..3c7524e4e6 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -216,6 +216,7 @@ func SettingsPost(ctx *context.Context) { ctx.Redirect(repo.Link() + "/settings") case "advanced": + var repoChanged bool var units []models.RepoUnit var deleteUnitTypes []models.UnitType @@ -223,6 +224,11 @@ func SettingsPost(ctx *context.Context) { // as an error on the UI for this action ctx.Data["Err_RepoName"] = nil + if repo.CloseIssuesViaCommitInAnyBranch != form.EnableCloseIssuesViaCommitInAnyBranch { + repo.CloseIssuesViaCommitInAnyBranch = form.EnableCloseIssuesViaCommitInAnyBranch + repoChanged = true + } + if form.EnableWiki && form.EnableExternalWiki && !models.UnitTypeExternalWiki.UnitGlobalDisabled() { if !validation.IsValidExternalURL(form.ExternalWikiURL) { ctx.Flash.Error(ctx.Tr("repo.settings.external_wiki_url_error")) @@ -326,6 +332,12 @@ func SettingsPost(ctx *context.Context) { ctx.ServerError("UpdateRepositoryUnits", err) return } + if repoChanged { + if err := models.UpdateRepository(repo, false); err != nil { + ctx.ServerError("UpdateRepository", err) + return + } + } log.Trace("Repository advanced settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name) ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success")) @@ -361,10 +373,6 @@ func SettingsPost(ctx *context.Context) { repo.IsFsckEnabled = form.EnableHealthCheck } - if repo.CloseIssuesViaCommitInAnyBranch != form.EnableCloseIssuesViaCommitInAnyBranch { - repo.CloseIssuesViaCommitInAnyBranch = form.EnableCloseIssuesViaCommitInAnyBranch - } - if err := models.UpdateRepository(repo, false); err != nil { ctx.ServerError("UpdateRepository", err) return diff --git a/templates/repo/settings/options.tmpl b/templates/repo/settings/options.tmpl index 9d87101671..f944eb8d8d 100644 --- a/templates/repo/settings/options.tmpl +++ b/templates/repo/settings/options.tmpl @@ -221,12 +221,16 @@ {{end}} -