diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-05-16 03:02:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-15 19:02:10 +0000 |
commit | 99283415bcbaa8acfe4d249ce3040de2f3a8b006 (patch) | |
tree | fec2fa557f45ffce4deea301758b869d87d5e4b9 /routers | |
parent | b9fad73e9fcf40e81cde3304198105af6c668421 (diff) | |
download | gitea-99283415bcbaa8acfe4d249ce3040de2f3a8b006.tar.gz gitea-99283415bcbaa8acfe4d249ce3040de2f3a8b006.zip |
Refactor Pull Mirror and fix out-of-sync bugs (#24732)
The "mirror" table and "repository" table might be out-of-sync in some
cases.
It means that "IsMirror=true" but "Mirror=nil"
This PR removes unnecessary "Mirror" field, rename "Mirror" to
"PullMirror" and fix nil panic bug.
Screenshot of changed templates:
![image](https://github.com/go-gitea/gitea/assets/2114189/c0f2bdfc-5911-43ea-b989-b19619de4235)
![image](https://github.com/go-gitea/gitea/assets/2114189/1078b41a-484f-4c06-8c2f-edb9e658275d)
Diffstat (limited to 'routers')
-rw-r--r-- | routers/web/repo/setting.go | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/routers/web/repo/setting.go b/routers/web/repo/setting.go index 16b718c919..578b70194e 100644 --- a/routers/web/repo/setting.go +++ b/routers/web/repo/setting.go @@ -198,6 +198,15 @@ func SettingsPost(ctx *context.Context) { return } + pullMirror, err := repo_model.GetMirrorByRepoID(ctx, ctx.Repo.Repository.ID) + if err == repo_model.ErrMirrorNotExist { + ctx.NotFound("", nil) + return + } + if err != nil { + ctx.ServerError("GetMirrorByRepoID", err) + return + } // This section doesn't require repo_name/RepoName to be set in the form, don't show it // as an error on the UI for this action ctx.Data["Err_RepoName"] = nil @@ -209,15 +218,15 @@ func SettingsPost(ctx *context.Context) { return } - ctx.Repo.Mirror.EnablePrune = form.EnablePrune - ctx.Repo.Mirror.Interval = interval - ctx.Repo.Mirror.ScheduleNextUpdate() - if err := repo_model.UpdateMirror(ctx, ctx.Repo.Mirror); err != nil { + pullMirror.EnablePrune = form.EnablePrune + pullMirror.Interval = interval + pullMirror.ScheduleNextUpdate() + if err := repo_model.UpdateMirror(ctx, pullMirror); err != nil { ctx.ServerError("UpdateMirror", err) return } - u, err := git.GetRemoteURL(ctx, ctx.Repo.Repository.RepoPath(), ctx.Repo.Mirror.GetRemoteName()) + u, err := git.GetRemoteURL(ctx, ctx.Repo.Repository.RepoPath(), pullMirror.GetRemoteName()) if err != nil { ctx.Data["Err_MirrorAddress"] = true handleSettingRemoteAddrError(ctx, err, form) @@ -237,7 +246,7 @@ func SettingsPost(ctx *context.Context) { return } - if err := mirror_service.UpdateAddress(ctx, ctx.Repo.Mirror, address); err != nil { + if err := mirror_service.UpdateAddress(ctx, pullMirror, address); err != nil { ctx.ServerError("UpdateAddress", err) return } @@ -259,9 +268,9 @@ func SettingsPost(ctx *context.Context) { } } - ctx.Repo.Mirror.LFS = form.LFS - ctx.Repo.Mirror.LFSEndpoint = form.LFSEndpoint - if err := repo_model.UpdateMirror(ctx, ctx.Repo.Mirror); err != nil { + pullMirror.LFS = form.LFS + pullMirror.LFSEndpoint = form.LFSEndpoint + if err := repo_model.UpdateMirror(ctx, pullMirror); err != nil { ctx.ServerError("UpdateMirror", err) return } |