mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-20 04:37:13 +00:00
Prevent NPE on update mirror settings (#19864)
A `repo_model.Mirror` repository field (`.Repo`) will not automatically be set, but is used without checking in mirror_pull.go:UpdateAddress. This will cause an NPE. This PR changes UpdateAddress to use the helper function GetRepository() helping prevent future NPEs but also changes modules/context/repo.go to ensure that the Mirror.Repo is set. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
6171ea7d31
commit
e32ab429ff
|
@ -391,7 +391,7 @@ func repoAssignment(ctx *Context, repo *repo_model.Repository) {
|
||||||
ctx.ServerError("GetMirrorByRepoID", err)
|
ctx.ServerError("GetMirrorByRepoID", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Repo.Mirror.Repo = ctx.Repo.Repository
|
ctx.Repo.Mirror.Repo = repo
|
||||||
ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune
|
ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune
|
||||||
ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval
|
ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval
|
||||||
ctx.Data["Mirror"] = ctx.Repo.Mirror
|
ctx.Data["Mirror"] = ctx.Repo.Mirror
|
||||||
|
|
|
@ -32,7 +32,7 @@ const gitShortEmptySha = "0000000"
|
||||||
// UpdateAddress writes new address to Git repository and database
|
// UpdateAddress writes new address to Git repository and database
|
||||||
func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error {
|
func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error {
|
||||||
remoteName := m.GetRemoteName()
|
remoteName := m.GetRemoteName()
|
||||||
repoPath := m.Repo.RepoPath()
|
repoPath := m.GetRepository().RepoPath()
|
||||||
// Remove old remote
|
// Remove old remote
|
||||||
_, _, err := git.NewCommand(ctx, "remote", "rm", remoteName).RunStdString(&git.RunOpts{Dir: repoPath})
|
_, _, err := git.NewCommand(ctx, "remote", "rm", remoteName).RunStdString(&git.RunOpts{Dir: repoPath})
|
||||||
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
|
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
|
||||||
|
|
Loading…
Reference in a new issue