mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	* Refactor repo.isBare to repo.isEmpty #5629 Signed-off-by: Andrew Thornton <art27@cantab.net> * Remove Sync call
This commit is contained in:
		| @@ -11,7 +11,7 @@ import ( | |||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestBareRepo(t *testing.T) { | func TestEmptyRepo(t *testing.T) { | ||||||
| 	prepareTestEnv(t) | 	prepareTestEnv(t) | ||||||
| 	subpaths := []string{ | 	subpaths := []string{ | ||||||
| 		"commits/master", | 		"commits/master", | ||||||
| @@ -19,10 +19,10 @@ func TestBareRepo(t *testing.T) { | |||||||
| 		"commit/1ae57b34ccf7e18373", | 		"commit/1ae57b34ccf7e18373", | ||||||
| 		"graph", | 		"graph", | ||||||
| 	} | 	} | ||||||
| 	bareRepo := models.AssertExistsAndLoadBean(t, &models.Repository{}, models.Cond("is_bare = ?", true)).(*models.Repository) | 	emptyRepo := models.AssertExistsAndLoadBean(t, &models.Repository{}, models.Cond("is_empty = ?", true)).(*models.Repository) | ||||||
| 	owner := models.AssertExistsAndLoadBean(t, &models.User{ID: bareRepo.OwnerID}).(*models.User) | 	owner := models.AssertExistsAndLoadBean(t, &models.User{ID: emptyRepo.OwnerID}).(*models.User) | ||||||
| 	for _, subpath := range subpaths { | 	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) | 		MakeRequest(t, req, http.StatusNotFound) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -574,13 +574,13 @@ func CommitRepoAction(opts CommitRepoActionOptions) error { | |||||||
|  |  | ||||||
| 	refName := git.RefEndName(opts.RefFullName) | 	refName := git.RefEndName(opts.RefFullName) | ||||||
|  |  | ||||||
| 	// Change default branch and bare status only if pushed ref is non-empty branch. | 	// Change default branch and empty status only if pushed ref is non-empty branch. | ||||||
| 	if repo.IsBare && opts.NewCommitID != git.EmptySHA && strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { | 	if repo.IsEmpty && opts.NewCommitID != git.EmptySHA && strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { | ||||||
| 		repo.DefaultBranch = refName | 		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 { | 	if err = UpdateRepository(repo, false); err != nil { | ||||||
| 		return fmt.Errorf("UpdateRepository: %v", err) | 		return fmt.Errorf("UpdateRepository: %v", err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -175,7 +175,7 @@ | |||||||
|   owner_id: 2 |   owner_id: 2 | ||||||
|   lower_name: repo15 |   lower_name: repo15 | ||||||
|   name: repo15 |   name: repo15 | ||||||
|   is_bare: true |   is_empty: true | ||||||
|  |  | ||||||
| - | - | ||||||
|   id: 16 |   id: 16 | ||||||
|   | |||||||
| @@ -208,6 +208,8 @@ var migrations = []Migration{ | |||||||
| 	NewMigration("add pull request rebase with merge commit", addPullRequestRebaseWithMerge), | 	NewMigration("add pull request rebase with merge commit", addPullRequestRebaseWithMerge), | ||||||
| 	// v77 -> v78 | 	// v77 -> v78 | ||||||
| 	NewMigration("add theme to users", addUserDefaultTheme), | 	NewMigration("add theme to users", addUserDefaultTheme), | ||||||
|  | 	// v78 -> v79 | ||||||
|  | 	NewMigration("rename repo is_bare to repo is_empty", renameRepoIsBareToIsEmpty), | ||||||
| } | } | ||||||
|  |  | ||||||
| // Migrate database to current version | // Migrate database to current version | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								models/migrations/v78.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								models/migrations/v78.go
									
									
									
									
									
										Normal file
									
								
							| @@ -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() | ||||||
|  | } | ||||||
| @@ -187,7 +187,7 @@ type Repository struct { | |||||||
| 	NumReleases         int `xorm:"-"` | 	NumReleases         int `xorm:"-"` | ||||||
|  |  | ||||||
| 	IsPrivate bool `xorm:"INDEX"` | 	IsPrivate bool `xorm:"INDEX"` | ||||||
| 	IsBare    bool `xorm:"INDEX"` | 	IsEmpty   bool `xorm:"INDEX"` | ||||||
|  |  | ||||||
| 	IsMirror bool `xorm:"INDEX"` | 	IsMirror bool `xorm:"INDEX"` | ||||||
| 	*Mirror  `xorm:"-"` | 	*Mirror  `xorm:"-"` | ||||||
| @@ -291,7 +291,7 @@ func (repo *Repository) innerAPIFormat(e Engine, mode AccessMode, isParent bool) | |||||||
| 		FullName:      repo.FullName(), | 		FullName:      repo.FullName(), | ||||||
| 		Description:   repo.Description, | 		Description:   repo.Description, | ||||||
| 		Private:       repo.IsPrivate, | 		Private:       repo.IsPrivate, | ||||||
| 		Empty:         repo.IsBare, | 		Empty:         repo.IsEmpty, | ||||||
| 		Size:          int(repo.Size / 1024), | 		Size:          int(repo.Size / 1024), | ||||||
| 		Fork:          repo.IsFork, | 		Fork:          repo.IsFork, | ||||||
| 		Parent:        parent, | 		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. | // CanEnablePulls returns true if repository meets the requirements of accepting pulls. | ||||||
| func (repo *Repository) CanEnablePulls() bool { | 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. | // 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") | 	_, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") { | 		if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") { | ||||||
| 			repo.IsBare = true | 			repo.IsEmpty = true | ||||||
| 		} else { | 		} 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. | 		// Try to get HEAD branch and set it as default branch. | ||||||
| 		gitRepo, err := git.OpenRepository(repoPath) | 		gitRepo, err := git.OpenRepository(repoPath) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -999,7 +999,7 @@ func MigrateRepository(doer, u *User, opts MigrateRepoOptions) (*Repository, err | |||||||
| 		repo, err = CleanUpMigrateInfo(repo) | 		repo, err = CleanUpMigrateInfo(repo) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if err != nil && !repo.IsBare { | 	if err != nil && !repo.IsEmpty { | ||||||
| 		UpdateRepoIndexer(repo) | 		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) | 		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 { | 	if err = git.InitRepository(repoPath, true); err != nil { | ||||||
| 		return fmt.Errorf("InitRepository: %v", err) | 		return fmt.Errorf("InitRepository: %v", err) | ||||||
| 	} else if err = createDelegateHooks(repoPath); err != nil { | 	} 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 { | 	if !opts.AutoInit { | ||||||
| 		repo.IsBare = true | 		repo.IsEmpty = true | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	repo.DefaultBranch = "master" | 	repo.DefaultBranch = "master" | ||||||
|   | |||||||
| @@ -124,7 +124,7 @@ func APIContexter() macaron.Handler { | |||||||
| func ReferencesGitRepo() macaron.Handler { | func ReferencesGitRepo() macaron.Handler { | ||||||
| 	return func(ctx *APIContext) { | 	return func(ctx *APIContext) { | ||||||
| 		// Empty repository does not have reference information. | 		// Empty repository does not have reference information. | ||||||
| 		if ctx.Repo.Repository.IsBare { | 		if ctx.Repo.Repository.IsEmpty { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -234,7 +234,7 @@ func repoAssignment(ctx *Context, repo *models.Repository) { | |||||||
|  |  | ||||||
| 	ctx.Repo.Repository = repo | 	ctx.Repo.Repository = repo | ||||||
| 	ctx.Data["RepoName"] = ctx.Repo.Repository.Name | 	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. | // 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) | 			ctx.Data["IsStaringRepo"] = models.IsStaring(ctx.User.ID, repo.ID) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// repo is bare and display enable | 		// repo is empty and display enable | ||||||
| 		if ctx.Repo.Repository.IsBare { | 		if ctx.Repo.Repository.IsEmpty { | ||||||
| 			ctx.Data["BranchName"] = ctx.Repo.Repository.DefaultBranch | 			ctx.Data["BranchName"] = ctx.Repo.Repository.DefaultBranch | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| @@ -520,7 +520,7 @@ func getRefName(ctx *Context, pathType RepoRefType) string { | |||||||
| func RepoRefByType(refType RepoRefType) macaron.Handler { | func RepoRefByType(refType RepoRefType) macaron.Handler { | ||||||
| 	return func(ctx *Context) { | 	return func(ctx *Context) { | ||||||
| 		// Empty repository does not have reference information. | 		// Empty repository does not have reference information. | ||||||
| 		if ctx.Repo.Repository.IsBare { | 		if ctx.Repo.Repository.IsEmpty { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -549,7 +549,7 @@ func RepoRefByType(refType RepoRefType) macaron.Handler { | |||||||
| 					ctx.ServerError("GetBranches", err) | 					ctx.ServerError("GetBranches", err) | ||||||
| 					return | 					return | ||||||
| 				} else if len(brs) == 0 { | 				} 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.Repo.GitRepo.Path) | ||||||
| 					ctx.ServerError("GetBranches", err) | 					ctx.ServerError("GetBranches", err) | ||||||
| 					return | 					return | ||||||
|   | |||||||
| @@ -578,7 +578,7 @@ quick_guide=Krátká příručka | |||||||
| clone_this_repo=Naklonovat tento repozitář | clone_this_repo=Naklonovat tento repozitář | ||||||
| create_new_repo_command=Vytvořit nový repozitář na příkazové řádce | 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 | 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=Zdrojový kód | ||||||
| code.desc=Přístup ke zdrojovým kódům, souborům, revizím a větvím. | code.desc=Přístup ke zdrojovým kódům, souborům, revizím a větvím. | ||||||
|   | |||||||
| @@ -572,7 +572,7 @@ quick_guide=Kurzanleitung | |||||||
| clone_this_repo=Dieses Repository klonen | clone_this_repo=Dieses Repository klonen | ||||||
| create_new_repo_command=Erstelle ein neues Repository von der Kommandozeile aus | create_new_repo_command=Erstelle ein neues Repository von der Kommandozeile aus | ||||||
| push_exist_repo=Bestehendes Repository via Kommandozeile pushen | 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=Code | ||||||
| code.desc=Zugriff auf Quellcode, Dateien, Commits und Branches. | code.desc=Zugriff auf Quellcode, Dateien, Commits und Branches. | ||||||
|   | |||||||
| @@ -578,7 +578,7 @@ quick_guide = Quick Guide | |||||||
| clone_this_repo = Clone this repository | clone_this_repo = Clone this repository | ||||||
| create_new_repo_command = Creating a new repository on the command line | create_new_repo_command = Creating a new repository on the command line | ||||||
| push_exist_repo = Pushing an existing repository from 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 = Code | ||||||
| code.desc = Access source code, files, commits and branches. | code.desc = Access source code, files, commits and branches. | ||||||
|   | |||||||
| @@ -356,7 +356,7 @@ quick_guide=Guía rápida | |||||||
| clone_this_repo=Clonar este repositorio | clone_this_repo=Clonar este repositorio | ||||||
| create_new_repo_command=Crear un nuevo repositorio desde línea de comandos | 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 | 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 | code=Código | ||||||
| branch=Rama | branch=Rama | ||||||
|   | |||||||
| @@ -578,7 +578,7 @@ quick_guide=Introduction rapide | |||||||
| clone_this_repo=Cloner ce dépôt | clone_this_repo=Cloner ce dépôt | ||||||
| create_new_repo_command=Création d'un nouveau dépôt en ligne de commande | 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 | 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=Code | ||||||
| code.desc=Accéder au code source, fichiers, révisions et branches. | code.desc=Accéder au code source, fichiers, révisions et branches. | ||||||
|   | |||||||
| @@ -289,7 +289,7 @@ quick_guide=Gyors útmutató | |||||||
| clone_this_repo=Tároló klónozása | clone_this_repo=Tároló klónozása | ||||||
| create_new_repo_command=Egy új tároló létrehozása a parancssorból | 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 | 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 | code=Kód | ||||||
| branch=Ág | branch=Ág | ||||||
|   | |||||||
| @@ -358,7 +358,7 @@ quick_guide=Panduan Cepat | |||||||
| clone_this_repo=Klon repositori ini | clone_this_repo=Klon repositori ini | ||||||
| create_new_repo_command=Membuat repositori baru pada baris perintah | create_new_repo_command=Membuat repositori baru pada baris perintah | ||||||
| push_exist_repo=Mendorong sebuah repositori yang ada di 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 | code=Kode | ||||||
| branch=Cabang | branch=Cabang | ||||||
|   | |||||||
| @@ -534,7 +534,7 @@ quick_guide=Guida rapida | |||||||
| clone_this_repo=Clona questo repository | clone_this_repo=Clona questo repository | ||||||
| create_new_repo_command=Creazione di un nuovo repository da riga di comando | 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 | 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=Codice | ||||||
| code.desc=Accedi al codice sorgente, file, commits e branches. | code.desc=Accedi al codice sorgente, file, commits e branches. | ||||||
|   | |||||||
| @@ -578,7 +578,7 @@ quick_guide=クイック ガイド | |||||||
| clone_this_repo=このリポジトリのクローンを作成 | clone_this_repo=このリポジトリのクローンを作成 | ||||||
| create_new_repo_command=コマンドラインから新しいリポジトリを作成 | create_new_repo_command=コマンドラインから新しいリポジトリを作成 | ||||||
| push_exist_repo=コマンドラインから既存のリポジトリをプッシュ | push_exist_repo=コマンドラインから既存のリポジトリをプッシュ | ||||||
| bare_message=このリポジトリには内容がありません。 | empty_message=このリポジトリには内容がありません。 | ||||||
|  |  | ||||||
| code=コード | code=コード | ||||||
| code.desc=ソースコード、ファイル、コミット、ブランチにアクセス。 | code.desc=ソースコード、ファイル、コミット、ブランチにアクセス。 | ||||||
|   | |||||||
| @@ -270,7 +270,7 @@ quick_guide=퀵 가이드 | |||||||
| clone_this_repo=이 저장소 복제 | clone_this_repo=이 저장소 복제 | ||||||
| create_new_repo_command=커맨드 라인에서 새 레포리지터리 생성 | create_new_repo_command=커맨드 라인에서 새 레포리지터리 생성 | ||||||
| push_exist_repo=커맨드라인에서 기존 레포지터리 푸시 | push_exist_repo=커맨드라인에서 기존 레포지터리 푸시 | ||||||
| bare_message=이 레포지터리에는 아무것도 없습니다. | empty_message=이 레포지터리에는 아무것도 없습니다. | ||||||
|  |  | ||||||
| code=코드 | code=코드 | ||||||
| branch=브렌치 | branch=브렌치 | ||||||
|   | |||||||
| @@ -571,7 +571,7 @@ quick_guide=Īsa pamācība | |||||||
| clone_this_repo=Klonēt šo repozitoriju | clone_this_repo=Klonēt šo repozitoriju | ||||||
| create_new_repo_command=Izveidot jaunu repozitoriju komandrindā | create_new_repo_command=Izveidot jaunu repozitoriju komandrindā | ||||||
| push_exist_repo=Nosūtīt izmaiņas no komandrindas eksistējošam repozitorijam | 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=Kods | ||||||
| code.desc=Piekļūt pirmkodam, failiem, revīzijām un atzariem. | code.desc=Piekļūt pirmkodam, failiem, revīzijām un atzariem. | ||||||
|   | |||||||
| @@ -470,7 +470,7 @@ quick_guide=Snelstart gids | |||||||
| clone_this_repo=Kloon deze repository | clone_this_repo=Kloon deze repository | ||||||
| create_new_repo_command=Maak een nieuwe repository aan vanaf de console | create_new_repo_command=Maak een nieuwe repository aan vanaf de console | ||||||
| push_exist_repo=Push een bestaande repositorie 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 | code=Code | ||||||
| branch=Branch | branch=Branch | ||||||
|   | |||||||
| @@ -554,7 +554,7 @@ quick_guide=Skrócona instrukcja | |||||||
| clone_this_repo=Klonuj repozytorium | clone_this_repo=Klonuj repozytorium | ||||||
| create_new_repo_command=Tworzenie nowego repozytorium z linii poleceń | create_new_repo_command=Tworzenie nowego repozytorium z linii poleceń | ||||||
| push_exist_repo=Wypychanie istniejącego 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 | code=Kod | ||||||
| branch=Gałąź | branch=Gałąź | ||||||
|   | |||||||
| @@ -578,7 +578,7 @@ quick_guide=Guia Rápido | |||||||
| clone_this_repo=Clonar este repositório | clone_this_repo=Clonar este repositório | ||||||
| create_new_repo_command=Criando um novo repositório por linha de comando | 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 | 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=Código | ||||||
| code.desc=Acesso a código-fonte, arquivos, commits e branches. | code.desc=Acesso a código-fonte, arquivos, commits e branches. | ||||||
|   | |||||||
| @@ -562,7 +562,7 @@ quick_guide=Краткое руководство | |||||||
| clone_this_repo=Клонировать репозиторий | clone_this_repo=Клонировать репозиторий | ||||||
| create_new_repo_command=Создать новый репозиторий из командной строки | create_new_repo_command=Создать новый репозиторий из командной строки | ||||||
| push_exist_repo=Push существующего репозитория из командной строки | push_exist_repo=Push существующего репозитория из командной строки | ||||||
| bare_message=В репозитории нет файлов. | empty_message=В репозитории нет файлов. | ||||||
|  |  | ||||||
| code=Код | code=Код | ||||||
| code.desc=Исходный код, файлы, коммиты и ветки. | code.desc=Исходный код, файлы, коммиты и ветки. | ||||||
|   | |||||||
| @@ -551,7 +551,7 @@ quick_guide=Snabbguide | |||||||
| clone_this_repo=Klona detta repo | clone_this_repo=Klona detta repo | ||||||
| create_new_repo_command=Skapa en ny utvecklingskatalog på kommandoraden | create_new_repo_command=Skapa en ny utvecklingskatalog på kommandoraden | ||||||
| push_exist_repo=Pusha en existerande utvecklingskatalog från 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=Kod | ||||||
| code.desc=Se källkod, filer, commits och brancher. | code.desc=Se källkod, filer, commits och brancher. | ||||||
|   | |||||||
| @@ -283,7 +283,7 @@ quick_guide=Hızlı Başlangıç Kılavuzu | |||||||
| clone_this_repo=Bu depoyu klonla | clone_this_repo=Bu depoyu klonla | ||||||
| create_new_repo_command=Komut satırında yeni bir depo oluşturuluyor | create_new_repo_command=Komut satırında yeni bir depo oluşturuluyor | ||||||
| push_exist_repo=Komut satırından mevcut bir depo itiliyor | 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 | code=Kod | ||||||
| branch=Dal | branch=Dal | ||||||
|   | |||||||
| @@ -562,7 +562,7 @@ quick_guide=Короткий посібник | |||||||
| clone_this_repo=Кнонувати цей репозиторій | clone_this_repo=Кнонувати цей репозиторій | ||||||
| create_new_repo_command=Створити новий репозиторій з командного рядка | create_new_repo_command=Створити новий репозиторій з командного рядка | ||||||
| push_exist_repo=Опублікувати існуючий репозиторій з командного рядка | push_exist_repo=Опублікувати існуючий репозиторій з командного рядка | ||||||
| bare_message=Цей репозиторій порожній. | empty_message=Цей репозиторій порожній. | ||||||
|  |  | ||||||
| code=Код | code=Код | ||||||
| code.desc=Доступ до коду, файлів, комітів та гілок. | code.desc=Доступ до коду, файлів, комітів та гілок. | ||||||
|   | |||||||
| @@ -577,7 +577,7 @@ quick_guide=快速帮助 | |||||||
| clone_this_repo=克隆当前仓库 | clone_this_repo=克隆当前仓库 | ||||||
| create_new_repo_command=从命令行创建一个新的仓库 | create_new_repo_command=从命令行创建一个新的仓库 | ||||||
| push_exist_repo=从命令行推送已经创建的仓库 | push_exist_repo=从命令行推送已经创建的仓库 | ||||||
| bare_message=这个家伙很懒,什么都没有推送。 | empty_message=这个家伙很懒,什么都没有推送。 | ||||||
|  |  | ||||||
| code=代码 | code=代码 | ||||||
| code.desc=查看源码、文件、提交和分支。 | code.desc=查看源码、文件、提交和分支。 | ||||||
|   | |||||||
| @@ -275,7 +275,7 @@ quick_guide=快速幫助 | |||||||
| clone_this_repo=複製當前儲存庫 | clone_this_repo=複製當前儲存庫 | ||||||
| create_new_repo_command=從命令列建立新儲存庫。 | create_new_repo_command=從命令列建立新儲存庫。 | ||||||
| push_exist_repo=從命令列推送已存在的儲存庫 | push_exist_repo=從命令列推送已存在的儲存庫 | ||||||
| bare_message=此儲存庫未包含任何內容。 | empty_message=此儲存庫未包含任何內容。 | ||||||
|  |  | ||||||
| code=程式碼 | code=程式碼 | ||||||
| branch=分支 | branch=分支 | ||||||
|   | |||||||
| @@ -500,7 +500,7 @@ quick_guide=快速幫助 | |||||||
| clone_this_repo=複製此儲存庫 | clone_this_repo=複製此儲存庫 | ||||||
| create_new_repo_command=從命令列建立新儲存庫。 | create_new_repo_command=從命令列建立新儲存庫。 | ||||||
| push_exist_repo=從命令行推送已經建立的儲存庫 | push_exist_repo=從命令行推送已經建立的儲存庫 | ||||||
| bare_message=此儲存庫未包含任何內容。 | empty_message=此儲存庫未包含任何內容。 | ||||||
|  |  | ||||||
| code=程式碼 | code=程式碼 | ||||||
| branch=分支 | branch=分支 | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ func GetRawFile(ctx *context.APIContext) { | |||||||
| 	// responses: | 	// responses: | ||||||
| 	//   200: | 	//   200: | ||||||
| 	//     description: success | 	//     description: success | ||||||
| 	if ctx.Repo.Repository.IsBare { | 	if ctx.Repo.Repository.IsEmpty { | ||||||
| 		ctx.Status(404) | 		ctx.Status(404) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -63,7 +63,7 @@ func getForkRepository(ctx *context.Context) *models.Repository { | |||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if forkRepo.IsBare || !perm.CanRead(models.UnitTypeCode) { | 	if forkRepo.IsEmpty || !perm.CanRead(models.UnitTypeCode) { | ||||||
| 		ctx.NotFound("getForkRepository", nil) | 		ctx.NotFound("getForkRepository", nil) | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -28,10 +28,10 @@ const ( | |||||||
| 	tplMigrate base.TplName = "repo/migrate" | 	tplMigrate base.TplName = "repo/migrate" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // MustBeNotBare render when a repo is a bare git dir | // MustBeNotEmpty render when a repo is a empty git dir | ||||||
| func MustBeNotBare(ctx *context.Context) { | func MustBeNotEmpty(ctx *context.Context) { | ||||||
| 	if ctx.Repo.Repository.IsBare { | 	if ctx.Repo.Repository.IsEmpty { | ||||||
| 		ctx.NotFound("MustBeNotBare", nil) | 		ctx.NotFound("MustBeNotEmpty", nil) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -30,10 +30,10 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| 	tplRepoBARE base.TplName = "repo/bare" | 	tplRepoEMPTY base.TplName = "repo/empty" | ||||||
| 	tplRepoHome base.TplName = "repo/home" | 	tplRepoHome  base.TplName = "repo/home" | ||||||
| 	tplWatchers base.TplName = "repo/watchers" | 	tplWatchers  base.TplName = "repo/watchers" | ||||||
| 	tplForks    base.TplName = "repo/forks" | 	tplForks     base.TplName = "repo/forks" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func renderDirectory(ctx *context.Context, treeLink string) { | func renderDirectory(ctx *context.Context, treeLink string) { | ||||||
| @@ -321,8 +321,8 @@ func Home(ctx *context.Context) { | |||||||
| func renderCode(ctx *context.Context) { | func renderCode(ctx *context.Context) { | ||||||
| 	ctx.Data["PageIsViewCode"] = true | 	ctx.Data["PageIsViewCode"] = true | ||||||
|  |  | ||||||
| 	if ctx.Repo.Repository.IsBare { | 	if ctx.Repo.Repository.IsEmpty { | ||||||
| 		ctx.HTML(200, tplRepoBARE) | 		ctx.HTML(200, tplRepoEMPTY) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -478,7 +478,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 	}, reqSignIn) | 	}, reqSignIn) | ||||||
|  |  | ||||||
| 	// ***** Release Attachment Download without Signin | 	// ***** 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("/:username/:reponame", func() { | ||||||
| 		m.Group("/settings", 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.ProtectedBranch).Post(repo.ProtectedBranchPost) | ||||||
| 				m.Combo("/*").Get(repo.SettingsProtectedBranch). | 				m.Combo("/*").Get(repo.SettingsProtectedBranch). | ||||||
| 					Post(bindIgnErr(auth.ProtectBranchForm{}), repo.SettingsProtectedBranchPost) | 					Post(bindIgnErr(auth.ProtectBranchForm{}), repo.SettingsProtectedBranchPost) | ||||||
| 			}, repo.MustBeNotBare) | 			}, repo.MustBeNotEmpty) | ||||||
|  |  | ||||||
| 			m.Group("/hooks", func() { | 			m.Group("/hooks", func() { | ||||||
| 				m.Get("", repo.Webhooks) | 				m.Get("", repo.Webhooks) | ||||||
| @@ -607,7 +607,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 				m.Post("/upload-file", repo.UploadFileToServer) | 				m.Post("/upload-file", repo.UploadFileToServer) | ||||||
| 				m.Post("/upload-remove", bindIgnErr(auth.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer) | 				m.Post("/upload-remove", bindIgnErr(auth.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer) | ||||||
| 			}, context.RepoRef(), repo.MustBeEditable, repo.MustBeAbleToUpload) | 			}, context.RepoRef(), repo.MustBeEditable, repo.MustBeAbleToUpload) | ||||||
| 		}, reqRepoCodeWriter, repo.MustBeNotBare) | 		}, reqRepoCodeWriter, repo.MustBeNotEmpty) | ||||||
|  |  | ||||||
| 		m.Group("/branches", func() { | 		m.Group("/branches", func() { | ||||||
| 			m.Group("/_new/", func() { | 			m.Group("/_new/", func() { | ||||||
| @@ -617,24 +617,24 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 			}, bindIgnErr(auth.NewBranchForm{})) | 			}, bindIgnErr(auth.NewBranchForm{})) | ||||||
| 			m.Post("/delete", repo.DeleteBranchPost) | 			m.Post("/delete", repo.DeleteBranchPost) | ||||||
| 			m.Post("/restore", repo.RestoreBranchPost) | 			m.Post("/restore", repo.RestoreBranchPost) | ||||||
| 		}, reqRepoCodeWriter, repo.MustBeNotBare) | 		}, reqRepoCodeWriter, repo.MustBeNotEmpty) | ||||||
|  |  | ||||||
| 	}, reqSignIn, context.RepoAssignment(), context.UnitTypes()) | 	}, reqSignIn, context.RepoAssignment(), context.UnitTypes()) | ||||||
|  |  | ||||||
| 	// Releases | 	// Releases | ||||||
| 	m.Group("/:username/:reponame", func() { | 	m.Group("/:username/:reponame", func() { | ||||||
| 		m.Group("/releases", func() { | 		m.Group("/releases", func() { | ||||||
| 			m.Get("/", repo.MustBeNotBare, repo.Releases) | 			m.Get("/", repo.MustBeNotEmpty, repo.Releases) | ||||||
| 		}, repo.MustBeNotBare, context.RepoRef()) | 		}, repo.MustBeNotEmpty, context.RepoRef()) | ||||||
| 		m.Group("/releases", func() { | 		m.Group("/releases", func() { | ||||||
| 			m.Get("/new", repo.NewRelease) | 			m.Get("/new", repo.NewRelease) | ||||||
| 			m.Post("/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost) | 			m.Post("/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost) | ||||||
| 			m.Post("/delete", repo.DeleteRelease) | 			m.Post("/delete", repo.DeleteRelease) | ||||||
| 		}, reqSignIn, repo.MustBeNotBare, reqRepoReleaseWriter, context.RepoRef()) | 		}, reqSignIn, repo.MustBeNotEmpty, reqRepoReleaseWriter, context.RepoRef()) | ||||||
| 		m.Group("/releases", func() { | 		m.Group("/releases", func() { | ||||||
| 			m.Get("/edit/*", repo.EditRelease) | 			m.Get("/edit/*", repo.EditRelease) | ||||||
| 			m.Post("/edit/*", bindIgnErr(auth.EditReleaseForm{}), repo.EditReleasePost) | 			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 | 			var err error | ||||||
| 			ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.Repository.DefaultBranch) | 			ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(ctx.Repo.Repository.DefaultBranch) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| @@ -682,13 +682,13 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 		m.Group("/activity", func() { | 		m.Group("/activity", func() { | ||||||
| 			m.Get("", repo.Activity) | 			m.Get("", repo.Activity) | ||||||
| 			m.Get("/:period", 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.Group("/branches", func() { | ||||||
| 			m.Get("", repo.Branches) | 			m.Get("", repo.Branches) | ||||||
| 		}, repo.MustBeNotBare, context.RepoRef(), reqRepoCodeReader) | 		}, repo.MustBeNotEmpty, context.RepoRef(), reqRepoCodeReader) | ||||||
|  |  | ||||||
| 		m.Group("/pulls/:index", func() { | 		m.Group("/pulls/:index", func() { | ||||||
| 			m.Get(".diff", repo.DownloadPullDiff) | 			m.Get(".diff", repo.DownloadPullDiff) | ||||||
| @@ -712,7 +712,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 			m.Get("/blob/:sha", context.RepoRefByType(context.RepoRefBlob), repo.DownloadByID) | 			m.Get("/blob/:sha", context.RepoRefByType(context.RepoRefBlob), repo.DownloadByID) | ||||||
| 			// "/*" route is deprecated, and kept for backward compatibility | 			// "/*" route is deprecated, and kept for backward compatibility | ||||||
| 			m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.SingleDownload) | 			m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.SingleDownload) | ||||||
| 		}, repo.MustBeNotBare, reqRepoCodeReader) | 		}, repo.MustBeNotEmpty, reqRepoCodeReader) | ||||||
|  |  | ||||||
| 		m.Group("/commits", func() { | 		m.Group("/commits", func() { | ||||||
| 			m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.RefCommits) | 			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) | 			m.Get("/commit/*", context.RepoRefByType(context.RepoRefCommit), repo.RefCommits) | ||||||
| 			// "/*" route is deprecated, and kept for backward compatibility | 			// "/*" route is deprecated, and kept for backward compatibility | ||||||
| 			m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.RefCommits) | 			m.Get("/*", context.RepoRefByType(context.RepoRefLegacy), repo.RefCommits) | ||||||
| 		}, repo.MustBeNotBare, reqRepoCodeReader) | 		}, repo.MustBeNotEmpty, reqRepoCodeReader) | ||||||
|  |  | ||||||
| 		m.Group("", func() { | 		m.Group("", func() { | ||||||
| 			m.Get("/graph", repo.Graph) | 			m.Get("/graph", repo.Graph) | ||||||
| 			m.Get("/commit/:sha([a-f0-9]{7,40})$", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.Diff) | 			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.Group("/src", func() { | ||||||
| 			m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.Home) | 			m.Get("/branch/*", context.RepoRefByType(context.RepoRefBranch), repo.Home) | ||||||
| @@ -739,10 +739,10 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||||
| 			m.Get("/forks", repo.Forks) | 			m.Get("/forks", repo.Forks) | ||||||
| 		}, context.RepoRef(), reqRepoCodeReader) | 		}, context.RepoRef(), reqRepoCodeReader) | ||||||
| 		m.Get("/commit/:sha([a-f0-9]{7,40})\\.:ext(patch|diff)", | 		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, | 		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()) | 	}, ignSignIn, context.RepoAssignment(), context.UnitTypes()) | ||||||
| 	m.Group("/:username/:reponame", func() { | 	m.Group("/:username/:reponame", func() { | ||||||
| 		m.Get("/stars", repo.Stars) | 		m.Get("/stars", repo.Stars) | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ git push -u origin master</code></pre> | |||||||
| 						</div> | 						</div> | ||||||
| 					{{else}} | 					{{else}} | ||||||
| 						<div class="ui segment center"> | 						<div class="ui segment center"> | ||||||
| 							{{.i18n.Tr "repo.bare_message"}} | 							{{.i18n.Tr "repo.empty_message"}} | ||||||
| 						</div> | 						</div> | ||||||
| 					{{end}} | 					{{end}} | ||||||
| 				</div> | 				</div> | ||||||
| @@ -30,7 +30,7 @@ | |||||||
| 						{{.NumStars}} | 						{{.NumStars}} | ||||||
| 					</a> | 					</a> | ||||||
| 				</div> | 				</div> | ||||||
| 				{{if and (not .IsBare) ($.Permission.CanRead $.UnitTypeCode)}} | 				{{if and (not .IsEmpty) ($.Permission.CanRead $.UnitTypeCode)}} | ||||||
| 					<div class="ui compact labeled button" tabindex="0"> | 					<div class="ui compact labeled button" tabindex="0"> | ||||||
| 						<a class="ui compact button {{if or (not $.IsSigned) (not $.CanSignedUserFork)}}poping up{{end}}" {{if $.CanSignedUserFork}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else if $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" {{ else }} data-content="{{$.i18n.Tr "repo.fork_guest_user" }}" href="{{AppSubUrl}}/user/login?redirect_to={{AppSubUrl}}/repo/fork/{{.ID}}" {{end}} data-position="top center" data-variation="tiny"> | 						<a class="ui compact button {{if or (not $.IsSigned) (not $.CanSignedUserFork)}}poping up{{end}}" {{if $.CanSignedUserFork}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else if $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" {{ else }} data-content="{{$.i18n.Tr "repo.fork_guest_user" }}" href="{{AppSubUrl}}/user/login?redirect_to={{AppSubUrl}}/repo/fork/{{.ID}}" {{end}} data-position="top center" data-variation="tiny"> | ||||||
| 							<i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}} | 							<i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}} | ||||||
| @@ -71,7 +71,7 @@ | |||||||
| 				</a> | 				</a> | ||||||
| 			{{end}} | 			{{end}} | ||||||
|  |  | ||||||
| 			{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsBareRepo) }} | 			{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo) }} | ||||||
| 			<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases"> | 			<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases"> | ||||||
| 				<i class="octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumReleases}}gray{{else}}blue{{end}} small label">{{.Repository.NumReleases}}</span> | 				<i class="octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumReleases}}gray{{else}}blue{{end}} small label">{{.Repository.NumReleases}}</span> | ||||||
| 			</a> | 			</a> | ||||||
| @@ -83,7 +83,7 @@ | |||||||
| 				</a> | 				</a> | ||||||
| 			{{end}} | 			{{end}} | ||||||
|  |  | ||||||
| 			{{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsBareRepo)}} | 			{{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsEmptyRepo)}} | ||||||
| 				<a class="{{if .PageIsActivity}}active{{end}} item" href="{{.RepoLink}}/activity"> | 				<a class="{{if .PageIsActivity}}active{{end}} item" href="{{.RepoLink}}/activity"> | ||||||
| 					<i class="octicon octicon-pulse"></i> {{.i18n.Tr "repo.activity"}} | 					<i class="octicon octicon-pulse"></i> {{.i18n.Tr "repo.activity"}} | ||||||
| 				</a> | 				</a> | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ | |||||||
| 			<form class="ui form" action="{{.Link}}" method="post"> | 			<form class="ui form" action="{{.Link}}" method="post"> | ||||||
| 				{{.CsrfTokenHtml}} | 				{{.CsrfTokenHtml}} | ||||||
| 				<input type="hidden" name="action" value="default_branch"> | 				<input type="hidden" name="action" value="default_branch"> | ||||||
| 				{{if not .Repository.IsBare}} | 				{{if not .Repository.IsEmpty}} | ||||||
| 				<div class="required inline field"> | 				<div class="required inline field"> | ||||||
| 					<div class="ui dropdown selection" tabindex="0"> | 					<div class="ui dropdown selection" tabindex="0"> | ||||||
| 						<select name="branch"> | 						<select name="branch"> | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| 	<a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{{.RepoLink}}/settings/collaboration"> | 	<a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{{.RepoLink}}/settings/collaboration"> | ||||||
| 		{{.i18n.Tr "repo.settings.collaboration"}} | 		{{.i18n.Tr "repo.settings.collaboration"}} | ||||||
| 	</a> | 	</a> | ||||||
| 	{{if not .Repository.IsBare}} | 	{{if not .Repository.IsEmpty}} | ||||||
| 		<a class="{{if .PageIsSettingsBranches}}active{{end}} item" href="{{.RepoLink}}/settings/branches"> | 		<a class="{{if .PageIsSettingsBranches}}active{{end}} item" href="{{.RepoLink}}/settings/branches"> | ||||||
| 			{{.i18n.Tr "repo.settings.branches"}} | 			{{.i18n.Tr "repo.settings.branches"}} | ||||||
| 		</a> | 		</a> | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| <div class="ui segment sub-menu"> | <div class="ui segment sub-menu"> | ||||||
| 	<div class="ui two horizontal center link list"> | 	<div class="ui two horizontal center link list"> | ||||||
| 		{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsBareRepo)}} | 		{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo)}} | ||||||
| 			<div class="item{{if .PageIsCommits}} active{{end}}"> | 			<div class="item{{if .PageIsCommits}} active{{end}}"> | ||||||
| 				<a href="{{.RepoLink}}/commits{{if .IsViewBranch}}/branch{{else if .IsViewTag}}/tag{{else if .IsViewCommit}}/commit{{end}}/{{EscapePound .BranchName}}"><i class="octicon octicon-history"></i> <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a> | 				<a href="{{.RepoLink}}/commits{{if .IsViewBranch}}/branch{{else if .IsViewTag}}/tag{{else if .IsViewCommit}}/commit{{end}}/{{EscapePound .BranchName}}"><i class="octicon octicon-history"></i> <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a> | ||||||
| 			</div> | 			</div> | ||||||
| 		{{end}} | 		{{end}} | ||||||
| 		{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsBareRepo) }} | 		{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo) }} | ||||||
| 			<div class="item{{if .PageIsBranches}} active{{end}}"> | 			<div class="item{{if .PageIsBranches}} active{{end}}"> | ||||||
| 				<a href="{{.RepoLink}}/branches/"><i class="octicon octicon-git-branch"></i> <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a> | 				<a href="{{.RepoLink}}/branches/"><i class="octicon octicon-git-branch"></i> <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a> | ||||||
| 			</div> | 			</div> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user