From 96b4780727b49a2c30c640a73751566f60ffc2af Mon Sep 17 00:00:00 2001 From: Dennis Keitzel Date: Sun, 11 Jun 2017 04:57:28 +0200 Subject: [PATCH] Gracefully handle bare repositories on API operations. (#1932) Signed-off-by: Dennis Keitzel --- models/repo_branch.go | 2 +- routers/api/v1/repo/branch.go | 7 ++++++- routers/api/v1/repo/file.go | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/models/repo_branch.go b/models/repo_branch.go index fcfd3e8ecb..4821902e37 100644 --- a/models/repo_branch.go +++ b/models/repo_branch.go @@ -39,7 +39,7 @@ func GetBranchesByPath(path string) ([]*Branch, error) { // GetBranch returns a branch by it's name func (repo *Repository) GetBranch(branch string) (*Branch, error) { if !git.IsBranchExist(repo.RepoPath(), branch) { - return nil, &ErrBranchNotExist{branch} + return nil, ErrBranchNotExist{branch} } return &Branch{ Path: repo.RepoPath(), diff --git a/routers/api/v1/repo/branch.go b/routers/api/v1/repo/branch.go index 3c73ae62c2..489fbe6b4e 100644 --- a/routers/api/v1/repo/branch.go +++ b/routers/api/v1/repo/branch.go @@ -7,6 +7,7 @@ package repo import ( api "code.gitea.io/sdk/gitea" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/routers/api/v1/convert" ) @@ -16,7 +17,11 @@ import ( func GetBranch(ctx *context.APIContext) { branch, err := ctx.Repo.Repository.GetBranch(ctx.Params(":branchname")) if err != nil { - ctx.Error(500, "GetBranch", err) + if models.IsErrBranchNotExist(err) { + ctx.Error(404, "GetBranch", err) + } else { + ctx.Error(500, "GetBranch", err) + } return } diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go index 16a31f96c7..9d12a6e136 100644 --- a/routers/api/v1/repo/file.go +++ b/routers/api/v1/repo/file.go @@ -20,6 +20,11 @@ func GetRawFile(ctx *context.APIContext) { return } + if ctx.Repo.Repository.IsBare { + ctx.Status(404) + return + } + blob, err := ctx.Repo.Commit.GetBlobByPath(ctx.Repo.TreePath) if err != nil { if git.IsErrNotExist(err) {