diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-04-19 21:40:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-19 21:40:42 +0800 |
commit | e422342eebc18034ef586ec58f1e2fff0340091d (patch) | |
tree | 307264b46c1683915429083d54e9634ee4f2fc4d /routers/web/repo/view.go | |
parent | 01214c8ada993bf5f54a4149979d140443d69410 (diff) | |
download | gitea-e422342eebc18034ef586ec58f1e2fff0340091d.tar.gz gitea-e422342eebc18034ef586ec58f1e2fff0340091d.zip |
Allow adding new files to an empty repo (#24164)
![image](https://user-images.githubusercontent.com/2114189/232561612-2bfcfd0a-fc04-47ba-965f-5d0bcea46c54.png)
Diffstat (limited to 'routers/web/repo/view.go')
-rw-r--r-- | routers/web/repo/view.go | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 150050f76b..5a11073ba9 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -154,16 +154,6 @@ func renderDirectory(ctx *context.Context, treeLink string) { ctx.Data["Title"] = ctx.Tr("repo.file.title", ctx.Repo.Repository.Name+"/"+path.Base(ctx.Repo.TreePath), ctx.Repo.RefName) } - // Check permission to add or upload new file. - if ctx.Repo.CanWrite(unit_model.TypeCode) && ctx.Repo.IsViewBranch { - ctx.Data["CanAddFile"] = !ctx.Repo.Repository.IsArchived - ctx.Data["CanUploadFile"] = setting.Repository.Upload.Enabled && !ctx.Repo.Repository.IsArchived - } - - if ctx.Written() { - return - } - subfolder, readmeFile, err := findReadmeFileInEntries(ctx, entries, true) if err != nil { ctx.ServerError("findReadmeFileInEntries", err) @@ -868,21 +858,25 @@ func renderRepoTopics(ctx *context.Context) { func renderCode(ctx *context.Context) { ctx.Data["PageIsViewCode"] = true + ctx.Data["RepositoryUploadEnabled"] = setting.Repository.Upload.Enabled - if ctx.Repo.Repository.IsEmpty { - reallyEmpty := true + if ctx.Repo.Commit == nil || ctx.Repo.Repository.IsEmpty || ctx.Repo.Repository.IsBroken() { + showEmpty := true var err error if ctx.Repo.GitRepo != nil { - reallyEmpty, err = ctx.Repo.GitRepo.IsEmpty() + showEmpty, err = ctx.Repo.GitRepo.IsEmpty() if err != nil { - ctx.ServerError("GitRepo.IsEmpty", err) - return + log.Error("GitRepo.IsEmpty: %v", err) + ctx.Repo.Repository.Status = repo_model.RepositoryBroken + showEmpty = true + ctx.Flash.Error(ctx.Tr("error.occurred"), true) } } - if reallyEmpty { + if showEmpty { ctx.HTML(http.StatusOK, tplRepoEMPTY) return } + // the repo is not really empty, so we should update the modal in database // such problem may be caused by: // 1) an error occurs during pushing/receiving. 2) the user replaces an empty git repo manually @@ -898,6 +892,14 @@ func renderCode(ctx *context.Context) { ctx.ServerError("UpdateRepoSize", err) return } + + // the repo's IsEmpty has been updated, redirect to this page to make sure middlewares can get the correct values + link := ctx.Link + if ctx.Req.URL.RawQuery != "" { + link += "?" + ctx.Req.URL.RawQuery + } + ctx.Redirect(link) + return } title := ctx.Repo.Repository.Owner.Name + "/" + ctx.Repo.Repository.Name @@ -927,11 +929,9 @@ func renderCode(ctx *context.Context) { return } - if !ctx.Repo.Repository.IsEmpty { - checkCitationFile(ctx, entry) - if ctx.Written() { - return - } + checkCitationFile(ctx, entry) + if ctx.Written() { + return } renderLanguageStats(ctx) |