diff --git a/integrations/bare_repo_test.go b/integrations/empty_repo_test.go similarity index 57% rename from integrations/bare_repo_test.go rename to integrations/empty_repo_test.go index e693c181d..2d72546e7 100644 --- a/integrations/bare_repo_test.go +++ b/integrations/empty_repo_test.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/gitea/models" ) -func TestBareRepo(t *testing.T) { +func TestEmptyRepo(t *testing.T) { prepareTestEnv(t) subpaths := []string{ "commits/master", @@ -19,10 +19,10 @@ func TestBareRepo(t *testing.T) { "commit/1ae57b34ccf7e18373", "graph", } - bareRepo := models.AssertExistsAndLoadBean(t, &models.Repository{}, models.Cond("is_bare = ?", true)).(*models.Repository) - owner := models.AssertExistsAndLoadBean(t, &models.User{ID: bareRepo.OwnerID}).(*models.User) + emptyRepo := models.AssertExistsAndLoadBean(t, &models.Repository{}, models.Cond("is_empty = ?", true)).(*models.Repository) + owner := models.AssertExistsAndLoadBean(t, &models.User{ID: emptyRepo.OwnerID}).(*models.User) for _, subpath := range subpaths { - req := NewRequestf(t, "GET", "/%s/%s/%s", owner.Name, bareRepo.Name, subpath) + req := NewRequestf(t, "GET", "/%s/%s/%s", owner.Name, emptyRepo.Name, subpath) MakeRequest(t, req, http.StatusNotFound) } } diff --git a/models/action.go b/models/action.go index d917c3774..5dc0eb18e 100644 --- a/models/action.go +++ b/models/action.go @@ -574,13 +574,13 @@ func CommitRepoAction(opts CommitRepoActionOptions) error { refName := git.RefEndName(opts.RefFullName) - // Change default branch and bare status only if pushed ref is non-empty branch. - if repo.IsBare && opts.NewCommitID != git.EmptySHA && strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { + // Change default branch and empty status only if pushed ref is non-empty branch. + if repo.IsEmpty && opts.NewCommitID != git.EmptySHA && strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { repo.DefaultBranch = refName - repo.IsBare = false + repo.IsEmpty = false } - // Change repository bare status and update last updated time. + // Change repository empty status and update last updated time. if err = UpdateRepository(repo, false); err != nil { return fmt.Errorf("UpdateRepository: %v", err) } diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml index aa9665653..d412e52d8 100644 --- a/models/fixtures/repository.yml +++ b/models/fixtures/repository.yml @@ -175,7 +175,7 @@ owner_id: 2 lower_name: repo15 name: repo15 - is_bare: true + is_empty: true - id: 16 diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 4c6b6d64b..533ff9073 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -208,6 +208,8 @@ var migrations = []Migration{ NewMigration("add pull request rebase with merge commit", addPullRequestRebaseWithMerge), // v77 -> v78 NewMigration("add theme to users", addUserDefaultTheme), + // v78 -> v79 + NewMigration("rename repo is_bare to repo is_empty", renameRepoIsBareToIsEmpty), } // Migrate database to current version diff --git a/models/migrations/v78.go b/models/migrations/v78.go new file mode 100644 index 000000000..d2b637da5 --- /dev/null +++ b/models/migrations/v78.go @@ -0,0 +1,42 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package migrations + +import ( + "fmt" + "strings" + + "code.gitea.io/gitea/models" + + "github.com/go-xorm/xorm" +) + +func renameRepoIsBareToIsEmpty(x *xorm.Engine) error { + type Repository struct { + ID int64 `xorm:"pk autoincr"` + IsBare bool + IsEmpty bool `xorm:"INDEX"` + } + + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + var err error + if models.DbCfg.Type == "mssql" { + _, err = sess.Query("EXEC sp_rename 'repository.is_bare', 'is_empty', 'COLUMN'") + } else { + _, err = sess.Query("ALTER TABLE \"repository\" RENAME COLUMN \"is_bare\" TO \"is_empty\";") + } + if err != nil { + if strings.Contains(err.Error(), "no such column") { + return nil + } + return fmt.Errorf("select repositories: %v", err) + } + + return sess.Commit() +} diff --git a/models/repo.go b/models/repo.go index 86d3e44a1..d2b163ff6 100644 --- a/models/repo.go +++ b/models/repo.go @@ -187,7 +187,7 @@ type Repository struct { NumReleases int `xorm:"-"` IsPrivate bool `xorm:"INDEX"` - IsBare bool `xorm:"INDEX"` + IsEmpty bool `xorm:"INDEX"` IsMirror bool `xorm:"INDEX"` *Mirror `xorm:"-"` @@ -291,7 +291,7 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool) FullName: repo.FullName(), Description: repo.Description, Private: repo.IsPrivate, - Empty: repo.IsBare, + Empty: repo.IsEmpty, Size: int(repo.Size / 1024), Fork: repo.IsFork, Parent: parent, @@ -656,7 +656,7 @@ func (repo *Repository) CanUserFork(user *User) (bool, error) { // CanEnablePulls returns true if repository meets the requirements of accepting pulls. func (repo *Repository) CanEnablePulls() bool { - return !repo.IsMirror && !repo.IsBare + return !repo.IsMirror && !repo.IsEmpty } // AllowsPulls returns true if repository meets the requirements of accepting pulls and has them enabled. @@ -954,13 +954,13 @@ func MigrateRepository(doer, u *User, opts MigrateRepoOptions) (*Repository, err _, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1") if err != nil { if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") { - repo.IsBare = true + repo.IsEmpty = true } else { - return repo, fmt.Errorf("check bare: %v - %s", err, stderr) + return repo, fmt.Errorf("check empty: %v - %s", err, stderr) } } - if !repo.IsBare { + if !repo.IsEmpty { // Try to get HEAD branch and set it as default branch. gitRepo, err := git.OpenRepository(repoPath) if err != nil { @@ -999,7 +999,7 @@ func MigrateRepository(doer, u *User, opts MigrateRepoOptions) (*Repository, err repo, err = CleanUpMigrateInfo(repo) } - if err != nil && !repo.IsBare { + if err != nil && !repo.IsEmpty { UpdateRepoIndexer(repo) } @@ -1214,7 +1214,7 @@ func initRepository(e Engine, repoPath string, u *User, repo *Repository, opts C return fmt.Errorf("initRepository: path already exists: %s", repoPath) } - // Init bare new repository. + // Init git bare new repository. if err = git.InitRepository(repoPath, true); err != nil { return fmt.Errorf("InitRepository: %v", err) } else if err = createDelegateHooks(repoPath); err != nil { @@ -1249,7 +1249,7 @@ func initRepository(e Engine, repoPath string, u *User, repo *Repository, opts C } if !opts.AutoInit { - repo.IsBare = true + repo.IsEmpty = true } repo.DefaultBranch = "master" diff --git a/modules/context/api.go b/modules/context/api.go index 6a9c79237..b27ffcbc8 100644 --- a/modules/context/api.go +++ b/modules/context/api.go @@ -124,7 +124,7 @@ func APIContexter() macaron.Handler { func ReferencesGitRepo() macaron.Handler { return func(ctx *APIContext) { // Empty repository does not have reference information. - if ctx.Repo.Repository.IsBare { + if ctx.Repo.Repository.IsEmpty { return } diff --git a/modules/context/repo.go b/modules/context/repo.go index 55d607a28..c10abdcb7 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -234,7 +234,7 @@ func repoAssignment(ctx *Context, repo *models.Repository) { ctx.Repo.Repository = repo ctx.Data["RepoName"] = ctx.Repo.Repository.Name - ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare + ctx.Data["IsEmptyRepo"] = ctx.Repo.Repository.IsEmpty } // RepoIDAssignment returns a macaron handler which assigns the repo to the context. @@ -370,8 +370,8 @@ func RepoAssignment() macaron.Handler { ctx.Data["IsStaringRepo"] = models.IsStaring(ctx.User.ID, repo.ID) } - // repo is bare and display enable - if ctx.Repo.Repository.IsBare { + // repo is empty and display enable + if ctx.Repo.Repository.IsEmpty { ctx.Data["BranchName"] = ctx.Repo.Repository.DefaultBranch return } @@ -520,7 +520,7 @@ func getRefName(ctx *Context, pathType RepoRefType) string { func RepoRefByType(refType RepoRefType) macaron.Handler { return func(ctx *Context) { // Empty repository does not have reference information. - if ctx.Repo.Repository.IsBare { + if ctx.Repo.Repository.IsEmpty { return } @@ -549,7 +549,7 @@ func RepoRefByType(refType RepoRefType) macaron.Handler { ctx.ServerError("GetBranches", err) return } else if len(brs) == 0 { - err = fmt.Errorf("No branches in non-bare repository %s", + err = fmt.Errorf("No branches in non-empty repository %s", ctx.Repo.GitRepo.Path) ctx.ServerError("GetBranches", err) return diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index f7318ffd6..c5c632d57 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -578,7 +578,7 @@ quick_guide=Krátká příručka clone_this_repo=Naklonovat tento repozitář create_new_repo_command=Vytvořit nový repozitář na příkazové řádce push_exist_repo=Nahrání existujícího repozitáře z příkazové řádky -bare_message=Tento repozitář nemá žádný obsah. +empty_message=Tento repozitář nemá žádný obsah. code=Zdrojový kód code.desc=Přístup ke zdrojovým kódům, souborům, revizím a větvím. diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index a73fc55c2..f74cfa320 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -572,7 +572,7 @@ quick_guide=Kurzanleitung clone_this_repo=Dieses Repository klonen create_new_repo_command=Erstelle ein neues Repository von der Kommandozeile aus push_exist_repo=Bestehendes Repository via Kommandozeile pushen -bare_message=Dieses Repository hat noch keinen Inhalt. +empty_message=Dieses Repository hat noch keinen Inhalt. code=Code code.desc=Zugriff auf Quellcode, Dateien, Commits und Branches. diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index fd51ca678..151629ea6 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -578,7 +578,7 @@ quick_guide = Quick Guide clone_this_repo = Clone this repository create_new_repo_command = Creating a new repository on the command line push_exist_repo = Pushing an existing repository from the command line -bare_message = This repository does not contain any content. +empty_message = This repository does not contain any content. code = Code code.desc = Access source code, files, commits and branches. diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index c646ced17..47a0ffd6d 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -356,7 +356,7 @@ quick_guide=Guía rápida clone_this_repo=Clonar este repositorio create_new_repo_command=Crear un nuevo repositorio desde línea de comandos push_exist_repo=Hacer push de un repositorio existente desde línea de comandos -bare_message=Este repositorio no contiene ningún contenido. +empty_message=Este repositorio no contiene ningún contenido. code=Código branch=Rama diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index f8faaec54..3c7443bfc 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -578,7 +578,7 @@ quick_guide=Introduction rapide clone_this_repo=Cloner ce dépôt create_new_repo_command=Création d'un nouveau dépôt en ligne de commande push_exist_repo=Soumission d'un dépôt existant par ligne de commande -bare_message=Ce dépôt ne contient aucune information. +empty_message=Ce dépôt ne contient aucune information. code=Code code.desc=Accéder au code source, fichiers, révisions et branches. diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index cd7874207..7c73e4053 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -289,7 +289,7 @@ quick_guide=Gyors útmutató clone_this_repo=Tároló klónozása create_new_repo_command=Egy új tároló létrehozása a parancssorból push_exist_repo=Meglévő tároló feltöltése parancssorból -bare_message=A tároló nem tartalmaz semmit, üres. +empty_message=A tároló nem tartalmaz semmit, üres. code=Kód branch=Ág diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index c5b9a2d7c..d34fa5d03 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -358,7 +358,7 @@ quick_guide=Panduan Cepat clone_this_repo=Klon repositori ini create_new_repo_command=Membuat repositori baru pada baris perintah push_exist_repo=Mendorong sebuah repositori yang ada di baris perintah -bare_message=Repositori ini tidak berisi konten apapun. +empty_message=Repositori ini tidak berisi konten apapun. code=Kode branch=Cabang diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index 6bbefcc90..ba3bc1b52 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -534,7 +534,7 @@ quick_guide=Guida rapida clone_this_repo=Clona questo repository create_new_repo_command=Creazione di un nuovo repository da riga di comando push_exist_repo=Push di un repository esistente da riga di comando -bare_message=Questo repository non contiene alcun contenuto. +empty_message=Questo repository non contiene alcun contenuto. code=Codice code.desc=Accedi al codice sorgente, file, commits e branches. diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index ea5178fa2..f768ef9e9 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -578,7 +578,7 @@ quick_guide=クイック ガイド clone_this_repo=このリポジトリのクローンを作成 create_new_repo_command=コマンドラインから新しいリポジトリを作成 push_exist_repo=コマンドラインから既存のリポジトリをプッシュ -bare_message=このリポジトリには内容がありません。 +empty_message=このリポジトリには内容がありません。 code=コード code.desc=ソースコード、ファイル、コミット、ブランチにアクセス。 diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index d9660e991..6c876da2d 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -270,7 +270,7 @@ quick_guide=퀵 가이드 clone_this_repo=이 저장소 복제 create_new_repo_command=커맨드 라인에서 새 레포리지터리 생성 push_exist_repo=커맨드라인에서 기존 레포지터리 푸시 -bare_message=이 레포지터리에는 아무것도 없습니다. +empty_message=이 레포지터리에는 아무것도 없습니다. code=코드 branch=브렌치 diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index dea7d5327..316ba001e 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -571,7 +571,7 @@ quick_guide=Īsa pamācība clone_this_repo=Klonēt šo repozitoriju create_new_repo_command=Izveidot jaunu repozitoriju komandrindā push_exist_repo=Nosūtīt izmaiņas no komandrindas eksistējošam repozitorijam -bare_message=Repozitorijs ir tukšs. +empty_message=Repozitorijs ir tukšs. code=Kods code.desc=Piekļūt pirmkodam, failiem, revīzijām un atzariem. diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 401a7eaa6..b06faf568 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -470,7 +470,7 @@ quick_guide=Snelstart gids clone_this_repo=Kloon deze repository create_new_repo_command=Maak een nieuwe repository aan vanaf de console push_exist_repo=Push een bestaande repositorie vanaf de console -bare_message=Deze repository bevat geen inhoud. +empty_message=Deze repository bevat geen inhoud. code=Code branch=Branch diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index 347005683..3ad43f73e 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -554,7 +554,7 @@ quick_guide=Skrócona instrukcja clone_this_repo=Klonuj repozytorium create_new_repo_command=Tworzenie nowego repozytorium z linii poleceń push_exist_repo=Wypychanie istniejącego repozytorium z linii poleceń -bare_message=Repozytorium jest puste. +empty_message=Repozytorium jest puste. code=Kod branch=Gałąź diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 88a66b997..2e2cead09 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -578,7 +578,7 @@ quick_guide=Guia Rápido clone_this_repo=Clonar este repositório create_new_repo_command=Criando um novo repositório por linha de comando push_exist_repo=Realizando push para um repositório existente por linha de comando -bare_message=Este repositório está vazio. +empty_message=Este repositório está vazio. code=Código code.desc=Acesso a código-fonte, arquivos, commits e branches. diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index e6a80586c..c410a5eaf 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -562,7 +562,7 @@ quick_guide=Краткое руководство clone_this_repo=Клонировать репозиторий create_new_repo_command=Создать новый репозиторий из командной строки push_exist_repo=Push существующего репозитория из командной строки -bare_message=В репозитории нет файлов. +empty_message=В репозитории нет файлов. code=Код code.desc=Исходный код, файлы, коммиты и ветки. diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index 7cd838810..b1d1973e1 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -551,7 +551,7 @@ quick_guide=Snabbguide clone_this_repo=Klona detta repo create_new_repo_command=Skapa en ny utvecklingskatalog på kommandoraden push_exist_repo=Pusha en existerande utvecklingskatalog från kommandoraden -bare_message=Denna utvecklingskatalog är tom. +empty_message=Denna utvecklingskatalog är tom. code=Kod code.desc=Se källkod, filer, commits och brancher. diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index be0e176aa..7b2c8d7b9 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -283,7 +283,7 @@ quick_guide=Hızlı Başlangıç Kılavuzu clone_this_repo=Bu depoyu klonla create_new_repo_command=Komut satırında yeni bir depo oluşturuluyor push_exist_repo=Komut satırından mevcut bir depo itiliyor -bare_message=Bu depo herhangi bir içerik içermiyor. +empty_message=Bu depo herhangi bir içerik içermiyor. code=Kod branch=Dal diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 8f83021ff..8053c858f 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -562,7 +562,7 @@ quick_guide=Короткий посібник clone_this_repo=Кнонувати цей репозиторій create_new_repo_command=Створити новий репозиторій з командного рядка push_exist_repo=Опублікувати існуючий репозиторій з командного рядка -bare_message=Цей репозиторій порожній. +empty_message=Цей репозиторій порожній. code=Код code.desc=Доступ до коду, файлів, комітів та гілок. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 8fe6695c8..9dda43727 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -577,7 +577,7 @@ quick_guide=快速帮助 clone_this_repo=克隆当前仓库 create_new_repo_command=从命令行创建一个新的仓库 push_exist_repo=从命令行推送已经创建的仓库 -bare_message=这个家伙很懒,什么都没有推送。 +empty_message=这个家伙很懒,什么都没有推送。 code=代码 code.desc=查看源码、文件、提交和分支。 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index 759c83130..7aa63e158 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -275,7 +275,7 @@ quick_guide=快速幫助 clone_this_repo=複製當前儲存庫 create_new_repo_command=從命令列建立新儲存庫。 push_exist_repo=從命令列推送已存在的儲存庫 -bare_message=此儲存庫未包含任何內容。 +empty_message=此儲存庫未包含任何內容。 code=程式碼 branch=分支 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 8568dbe9d..e6408b86f 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -500,7 +500,7 @@ quick_guide=快速幫助 clone_this_repo=複製此儲存庫 create_new_repo_command=從命令列建立新儲存庫。 push_exist_repo=從命令行推送已經建立的儲存庫 -bare_message=此儲存庫未包含任何內容。 +empty_message=此儲存庫未包含任何內容。 code=程式碼 branch=分支 diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go index 81f233208..762a0f25d 100644 --- a/routers/api/v1/repo/file.go +++ b/routers/api/v1/repo/file.go @@ -39,7 +39,7 @@ func GetRawFile(ctx *context.APIContext) { // responses: // 200: // description: success - if ctx.Repo.Repository.IsBare { + if ctx.Repo.Repository.IsEmpty { ctx.Status(404) return } diff --git a/routers/repo/pull.go b/routers/repo/pull.go index 36135084a..688a033fd 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -63,7 +63,7 @@ func getForkRepository(ctx *context.Context) *models.Repository { return nil } - if forkRepo.IsBare || !perm.CanRead(models.UnitTypeCode) { + if forkRepo.IsEmpty || !perm.CanRead(models.UnitTypeCode) { ctx.NotFound("getForkRepository", nil) return nil } diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 6071b7a54..960961a5e 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -28,10 +28,10 @@ const ( tplMigrate base.TplName = "repo/migrate" ) -// MustBeNotBare render when a repo is a bare git dir -func MustBeNotBare(ctx *context.Context) { - if ctx.Repo.Repository.IsBare { - ctx.NotFound("MustBeNotBare", nil) +// MustBeNotEmpty render when a repo is a empty git dir +func MustBeNotEmpty(ctx *context.Context) { + if ctx.Repo.Repository.IsEmpty { + ctx.NotFound("MustBeNotEmpty", nil) } } diff --git a/routers/repo/view.go b/routers/repo/view.go index 8739c139d..66977e3b5 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -30,10 +30,10 @@ import ( ) const ( - tplRepoBARE base.TplName = "repo/bare" - tplRepoHome base.TplName = "repo/home" - tplWatchers base.TplName = "repo/watchers" - tplForks base.TplName = "repo/forks" + tplRepoEMPTY base.TplName = "repo/empty" + tplRepoHome base.TplName = "repo/home" + tplWatchers base.TplName = "repo/watchers" + tplForks base.TplName = "repo/forks" ) func renderDirectory(ctx *context.Context, treeLink string) { @@ -321,8 +321,8 @@ func Home(ctx *context.Context) { func renderCode(ctx *context.Context) { ctx.Data["PageIsViewCode"] = true - if ctx.Repo.Repository.IsBare { - ctx.HTML(200, tplRepoBARE) + if ctx.Repo.Repository.IsEmpty { + ctx.HTML(200, tplRepoEMPTY) return } diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 601142732..afbb31d78 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -478,7 +478,7 @@ func RegisterRoutes(m *macaron.Macaron) { }, reqSignIn) // ***** Release Attachment Download without Signin - m.Get("/:username/:reponame/releases/download/:vTag/:fileName", ignSignIn, context.RepoAssignment(), repo.MustBeNotBare, repo.RedirectDownload) + m.Get("/:username/:reponame/releases/download/:vTag/:fileName", ignSignIn, context.RepoAssignment(), repo.MustBeNotEmpty, repo.RedirectDownload) m.Group("/:username/:reponame", func() { m.Group("/settings", func() { @@ -493,7 +493,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Combo("").Get(repo.ProtectedBranch).Post(repo.ProtectedBranchPost) m.Combo("/*").Get(repo.SettingsProtectedBranch). Post(bindIgnErr(auth.ProtectBranchForm{}), repo.SettingsProtectedBranchPost) - }, repo.MustBeNotBare) + }, repo.MustBeNotEmpty) m.Group("/hooks", func() { m.Get("", repo.Webhooks) @@ -607,7 +607,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Post("/upload-file", repo.UploadFileToServer) m.Post("/upload-remove", bindIgnErr(auth.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer) }, context.RepoRef(), repo.MustBeEditable, repo.MustBeAbleToUpload) - }, reqRepoCodeWriter, repo.MustBeNotBare) + }, reqRepoCodeWriter, repo.MustBeNotEmpty) m.Group("/branches", func() { m.Group("/_new/", func() { @@ -617,24 +617,24 @@ func RegisterRoutes(m *macaron.Macaron) { }, bindIgnErr(auth.NewBranchForm{})) m.Post("/delete", repo.DeleteBranchPost) m.Post("/restore", repo.RestoreBranchPost) - }, reqRepoCodeWriter, repo.MustBeNotBare) + }, reqRepoCodeWriter, repo.MustBeNotEmpty) }, reqSignIn, context.RepoAssignment(), context.UnitTypes()) // Releases m.Group("/:username/:reponame", func() { m.Group("/releases", func() { - m.Get("/", repo.MustBeNotBare, repo.Releases) - }, repo.MustBeNotBare, context.RepoRef()) + m.Get("/", repo.MustBeNotEmpty, repo.Releases) + }, repo.MustBeNotEmpty, context.RepoRef()) m.Group("/releases", func() { m.Get("/new", repo.NewRelease) m.Post("/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost) m.Post("/delete", repo.DeleteRelease) - }, reqSignIn, repo.MustBeNotBare, reqRepoReleaseWriter, context.RepoRef()) + }, reqSignIn, repo.MustBeNotEmpty, reqRepoReleaseWriter, context.RepoRef()) m.Group("/releases", func() { m.Get("/edit/*", repo.EditRelease) m.Post("/edit/*", bindIgnErr(auth.EditReleaseForm{}), repo.EditReleasePost) - }, reqSignIn, repo.MustBeNotBare, reqRepoReleaseWriter, func(ctx *context.Context) { + }, reqSignIn, repo.MustBeNotEmpty, reqRepoReleaseWriter, func(ctx *context.Context) { var err error ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.Repository.DefaultBranch) if err != nil { @@ -682,13 +682,13 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/activity", func() { m.Get("", repo.Activity) m.Get("/:period", repo.Activity) - }, context.RepoRef(), repo.MustBeNotBare, context.RequireRepoReaderOr(models.UnitTypePullRequests, models.UnitTypeIssues, models.UnitTypeReleases)) + }, context.RepoRef(), repo.MustBeNotEmpty, context.RequireRepoReaderOr(models.UnitTypePullRequests, models.UnitTypeIssues, models.UnitTypeReleases)) - m.Get("/archive/*", repo.MustBeNotBare, reqRepoCodeReader, repo.Download) + m.Get("/archive/*", repo.MustBeNotEmpty, reqRepoCodeReader, repo.Download) m.Group("/branches", func() { m.Get("", repo.Branches) - }, repo.MustBeNotBare, context.RepoRef(), reqRepoCodeReader) + }, repo.MustBeNotEmpty, context.RepoRef(), reqRepoCodeReader) m.Group("/pulls/:index", func() { m.Get(".diff", repo.DownloadPullDiff) @@ -712,7 +712,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/blob/:sha", context.RepoRefByType(context.RepoRefBlob), repo.DownloadByID) // "/*" route is deprecated, and kept for backward compatibility m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.SingleDownload) - }, repo.MustBeNotBare, reqRepoCodeReader) + }, repo.MustBeNotEmpty, reqRepoCodeReader) m.Group("/commits", func() { m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.RefCommits) @@ -720,12 +720,12 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/commit/*", context.RepoRefByType(context.RepoRefCommit), repo.RefCommits) // "/*" route is deprecated, and kept for backward compatibility m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.RefCommits) - }, repo.MustBeNotBare, reqRepoCodeReader) + }, repo.MustBeNotEmpty, reqRepoCodeReader) m.Group("", func() { m.Get("/graph", repo.Graph) m.Get("/commit/:sha([a-f0-9]{7,40})$", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.Diff) - }, repo.MustBeNotBare, context.RepoRef(), reqRepoCodeReader) + }, repo.MustBeNotEmpty, context.RepoRef(), reqRepoCodeReader) m.Group("/src", func() { m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.Home) @@ -739,10 +739,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/forks", repo.Forks) }, context.RepoRef(), reqRepoCodeReader) m.Get("/commit/:sha([a-f0-9]{7,40})\\.:ext(patch|diff)", - repo.MustBeNotBare, reqRepoCodeReader, repo.RawDiff) + repo.MustBeNotEmpty, reqRepoCodeReader, repo.RawDiff) m.Get("/compare/:before([a-z0-9]{40})\\.\\.\\.:after([a-z0-9]{40})", repo.SetEditorconfigIfExists, - repo.SetDiffViewStyle, repo.MustBeNotBare, reqRepoCodeReader, repo.CompareDiff) + repo.SetDiffViewStyle, repo.MustBeNotEmpty, reqRepoCodeReader, repo.CompareDiff) }, ignSignIn, context.RepoAssignment(), context.UnitTypes()) m.Group("/:username/:reponame", func() { m.Get("/stars", repo.Stars) diff --git a/templates/repo/bare.tmpl b/templates/repo/empty.tmpl similarity index 98% rename from templates/repo/bare.tmpl rename to templates/repo/empty.tmpl index ec4be2bde..c213381d7 100644 --- a/templates/repo/bare.tmpl +++ b/templates/repo/empty.tmpl @@ -59,7 +59,7 @@ git push -u origin master {{else}}
- {{.i18n.Tr "repo.bare_message"}} + {{.i18n.Tr "repo.empty_message"}}
{{end}} diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl index b0ea694ff..3dc5a40f1 100644 --- a/templates/repo/header.tmpl +++ b/templates/repo/header.tmpl @@ -30,7 +30,7 @@ {{.NumStars}} - {{if and (not .IsBare) ($.Permission.CanRead $.UnitTypeCode)}} + {{if and (not .IsEmpty) ($.Permission.CanRead $.UnitTypeCode)}}
{{$.i18n.Tr "repo.fork"}} @@ -71,7 +71,7 @@ {{end}} - {{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsBareRepo) }} + {{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo) }} {{.i18n.Tr "repo.releases"}} {{.Repository.NumReleases}} @@ -83,7 +83,7 @@ {{end}} - {{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsBareRepo)}} + {{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsEmptyRepo)}} {{.i18n.Tr "repo.activity"}} diff --git a/templates/repo/settings/branches.tmpl b/templates/repo/settings/branches.tmpl index 6df2517a9..369f73fcc 100644 --- a/templates/repo/settings/branches.tmpl +++ b/templates/repo/settings/branches.tmpl @@ -14,7 +14,7 @@
{{.CsrfTokenHtml}} - {{if not .Repository.IsBare}} + {{if not .Repository.IsEmpty}}