From 1fd1100ac92effa97ce5833583a1b80f228bda47 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sat, 18 May 2024 00:07:41 +0800 Subject: [PATCH] Simplify mirror repository API logic (#30963) Fix #30921 (cherry picked from commit 821d2fc2a3cc897f21d707455850177077b72410) (cherry picked from commit 50b4e7f26ea7e24ce193b43144054bff60d08c44) Equivalent to the Gitea v1.22 commit (cherry picked from commit 8eac16de217978c1f7034f8e360f54d8d638e95e) --- modules/structs/repo.go | 2 +- routers/api/v1/repo/repo.go | 12 +++--------- templates/swagger/v1_json.tmpl | 2 +- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/modules/structs/repo.go b/modules/structs/repo.go index f6cc9803a4..b457be4aa4 100644 --- a/modules/structs/repo.go +++ b/modules/structs/repo.go @@ -227,7 +227,7 @@ type EditRepoOption struct { Archived *bool `json:"archived,omitempty"` // set to a string like `8h30m0s` to set the mirror interval time MirrorInterval *string `json:"mirror_interval,omitempty"` - // enable prune - remove obsolete remote-tracking references + // enable prune - remove obsolete remote-tracking references when mirroring EnablePrune *bool `json:"enable_prune,omitempty"` } diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 494f238ffb..1f2d5c768c 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -1054,16 +1054,10 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e func updateMirror(ctx *context.APIContext, opts api.EditRepoOption) error { repo := ctx.Repo.Repository - // only update mirror if interval or enable prune are provided - if opts.MirrorInterval == nil && opts.EnablePrune == nil { - return nil - } - - // these values only make sense if the repo is a mirror + // Skip this update if the repo is not a mirror, do not return error. + // Because reporting errors only makes the logic more complex&fragile, it doesn't really help end users. if !repo.IsMirror { - err := fmt.Errorf("repo is not a mirror, can not change mirror interval") - ctx.Error(http.StatusUnprocessableEntity, err.Error(), err) - return err + return nil } // get the mirror from the repo diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 41c7cc61ef..12d89d3049 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -20115,7 +20115,7 @@ "x-go-name": "Description" }, "enable_prune": { - "description": "enable prune - remove obsolete remote-tracking references", + "description": "enable prune - remove obsolete remote-tracking references when mirroring", "type": "boolean", "x-go-name": "EnablePrune" },