From 1d951cfc4915d9beb12b9e2e9fcd178069e4ce02 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Wed, 1 Feb 2017 10:21:03 -0200 Subject: [PATCH] Fix 500 when repo has invalid .editorconfig (#3758) Creating a notice instead Fixes #3643 --- routers/repo/commit.go | 6 ++---- routers/repo/middlewares.go | 23 +++++++++++++++++++++++ routers/repo/pull.go | 12 ++++-------- routers/repo/view.go | 6 ++---- 4 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 routers/repo/middlewares.go diff --git a/routers/repo/commit.go b/routers/repo/commit.go index b9ced49ed..455f02cf1 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -179,12 +179,10 @@ func Diff(ctx *context.Context) { } } - ec, err := ctx.Repo.GetEditorconfig() - if err != nil && !git.IsErrNotExist(err) { - ctx.Handle(500, "ErrGettingEditorconfig", err) + setEditorconfigIfExists(ctx) + if ctx.Written() { return } - ctx.Data["Editorconfig"] = ec ctx.Data["CommitID"] = commitID ctx.Data["IsSplitStyle"] = ctx.Query("style") == "split" diff --git a/routers/repo/middlewares.go b/routers/repo/middlewares.go new file mode 100644 index 000000000..2c3444200 --- /dev/null +++ b/routers/repo/middlewares.go @@ -0,0 +1,23 @@ +package repo + +import ( + "fmt" + + "github.com/gogits/git-module" + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/context" +) + +func setEditorconfigIfExists(ctx *context.Context) { + ec, err := ctx.Repo.GetEditorconfig() + + if err != nil && !git.IsErrNotExist(err) { + description := fmt.Sprintf("Error while getting .editorconfig file: %v", err) + if err := models.CreateRepositoryNotice(description); err != nil { + ctx.Handle(500, "ErrCreatingReporitoryNotice", err) + } + return + } + + ctx.Data["Editorconfig"] = ec +} diff --git a/routers/repo/pull.go b/routers/repo/pull.go index fe6060107..d649e3d7f 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -357,12 +357,10 @@ func ViewPullFiles(ctx *context.Context) { return } - ec, err := ctx.Repo.GetEditorconfig() - if err != nil && !git.IsErrNotExist(err) { - ctx.Handle(500, "ErrGettingEditorconfig", err) + setEditorconfigIfExists(ctx) + if ctx.Written() { return } - ctx.Data["Editorconfig"] = ec headTarget := path.Join(pull.HeadUserName, pull.HeadRepo.Name) ctx.Data["IsSplitStyle"] = ctx.Query("style") == "split" @@ -616,12 +614,10 @@ func CompareAndPullRequest(ctx *context.Context) { } } - ec, err := ctx.Repo.GetEditorconfig() - if err != nil && !git.IsErrNotExist(err) { - ctx.Handle(500, "ErrGettingEditorconfig", err) + setEditorconfigIfExists(ctx) + if ctx.Written() { return } - ctx.Data["Editorconfig"] = ec ctx.HTML(200, COMPARE_PULL) } diff --git a/routers/repo/view.go b/routers/repo/view.go index c6bf4b900..7d9278e7b 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -244,12 +244,10 @@ func Home(ctx *context.Context) { return } - ec, err := ctx.Repo.GetEditorconfig() - if err != nil && !git.IsErrNotExist(err) { - ctx.Handle(500, "Repo.GetEditorconfig", err) + setEditorconfigIfExists(ctx) + if ctx.Written() { return } - ctx.Data["Editorconfig"] = ec var treeNames []string paths := make([]string, 0, 5)