Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions modules/repository/branch.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository,
if err != nil {
return 0, fmt.Errorf("GetObjectFormat: %w", err)
}
_, err = db.GetEngine(ctx).ID(repo.ID).Update(&repo_model.Repository{ObjectFormatName: objFmt.Name()})
if err != nil {
return 0, fmt.Errorf("UpdateRepository: %w", err)
if objFmt.Name() != repo.ObjectFormatName {
repo.ObjectFormatName = objFmt.Name()
if err = repo_model.UpdateRepositoryColsWithAutoTime(ctx, repo, "object_format_name"); err != nil {
return 0, fmt.Errorf("UpdateRepositoryColsWithAutoTime: %w", err)
}
}
repo.ObjectFormatName = objFmt.Name() // keep consistent with db

allBranches := container.Set[string]{}
{
Expand Down
27 changes: 9 additions & 18 deletions routers/web/repo/setting/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -663,44 +663,35 @@ func handleSettingsPostAdvanced(ctx *context.Context) {
func handleSettingsPostSigning(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.RepoSettingForm)
repo := ctx.Repo.Repository
changed := false
trustModel := repo_model.ToTrustModel(form.TrustModel)
if trustModel != repo.TrustModel {
repo.TrustModel = trustModel
changed = true
}

if changed {
if err := repo_service.UpdateRepository(ctx, repo, false); err != nil {
if err := repo_service.UpdateRepositoryTrustModel(ctx, repo, trustModel); err != nil {
ctx.ServerError("UpdateRepository", err)
return
}
log.Trace("Repository signing settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
}
log.Trace("Repository signing settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)

ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
}

func handleSettingsPostAdmin(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.RepoSettingForm)
repo := ctx.Repo.Repository
if !ctx.Doer.IsAdmin {
ctx.HTTPError(http.StatusForbidden)
return
}

repo := ctx.Repo.Repository
form := web.GetForm(ctx).(*forms.RepoSettingForm)
if repo.IsFsckEnabled != form.EnableHealthCheck {
repo.IsFsckEnabled = form.EnableHealthCheck
}

if err := repo_service.UpdateRepository(ctx, repo, false); err != nil {
ctx.ServerError("UpdateRepository", err)
return
if err := repo_service.UpdateRepositoryHealthCheck(ctx, repo, form.EnableHealthCheck); err != nil {
ctx.ServerError("UpdateRepository", err)
return
}
log.Trace("Repository admin settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
}

log.Trace("Repository admin settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)

ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
}
Expand Down
20 changes: 20 additions & 0 deletions services/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,26 @@ func UpdateRepository(ctx context.Context, repo *repo_model.Repository, visibili
})
}

func UpdateRepositoryTrustModel(ctx context.Context, repo *repo_model.Repository, trustModel repo_model.TrustModelType) (err error) {
return db.WithTx(ctx, func(ctx context.Context) error {
repo.TrustModel = trustModel
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "trust_model"); err != nil {
return fmt.Errorf("UpdateRepositoryColsNoAutoTime: %w", err)
}
return nil
})
}

func UpdateRepositoryHealthCheck(ctx context.Context, repo *repo_model.Repository, healthCheckEnabled bool) (err error) {
return db.WithTx(ctx, func(ctx context.Context) error {
repo.IsFsckEnabled = healthCheckEnabled
if err := repo_model.UpdateRepositoryColsNoAutoTime(ctx, repo, "is_fsck_enabled"); err != nil {
return fmt.Errorf("UpdateRepositoryColsNoAutoTime: %w", err)
}
return nil
})
}

func MakeRepoPublic(ctx context.Context, repo *repo_model.Repository) (err error) {
return db.WithTx(ctx, func(ctx context.Context) error {
repo.IsPrivate = false
Expand Down