summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-05-16 03:02:10 +0800
committerGitHub <noreply@github.com>2023-05-15 19:02:10 +0000
commit99283415bcbaa8acfe4d249ce3040de2f3a8b006 (patch)
treefec2fa557f45ffce4deea301758b869d87d5e4b9 /routers
parentb9fad73e9fcf40e81cde3304198105af6c668421 (diff)
downloadgitea-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.go27
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
}