summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslene <vslene@gmail.com>2014-03-30 13:30:17 +0800
committerslene <vslene@gmail.com>2014-03-30 13:30:17 +0800
commitd6c9e3413a982fd64a74e774d4a2b8157f39f299 (patch)
tree60ec4e94acdb6925c612deb49871f57c75b64584
parente2f63d81d3528c191e85fe228a37b5f0d58a405f (diff)
downloadgitea-d6c9e3413a982fd64a74e774d4a2b8157f39f299.tar.gz
gitea-d6c9e3413a982fd64a74e774d4a2b8157f39f299.zip
fix display bare repo
-rw-r--r--modules/middleware/repo.go88
-rw-r--r--routers/repo/repo.go1
-rw-r--r--templates/repo/single_bare.tmpl13
-rw-r--r--templates/repo/toolbar.tmpl2
-rw-r--r--web.go13
5 files changed, 68 insertions, 49 deletions
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index deb282865e..559e90c0cf 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -17,10 +17,20 @@ import (
"github.com/gogits/gogs/modules/base"
)
-func RepoAssignment(redirect bool) martini.Handler {
+func RepoAssignment(redirect bool, args ...bool) martini.Handler {
return func(ctx *Context, params martini.Params) {
- // assign false first
- ctx.Data["IsRepositoryValid"] = false
+ // valid brachname
+ var validBranch bool
+ // display bare quick start if it is a bare repo
+ var displayBare bool
+
+ if len(args) >= 1 {
+ validBranch = args[0]
+ }
+
+ if len(args) >= 2 {
+ displayBare = args[1]
+ }
var (
user *models.User
@@ -71,6 +81,8 @@ func RepoAssignment(redirect bool) martini.Handler {
}
ctx.Repo.Repository = repo
+ ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare
+
gitRepo, err := git.OpenRepository(models.RepoPath(userName, repoName))
if err != nil {
ctx.Handle(404, "RepoAssignment Invalid repo "+models.RepoPath(userName, repoName), err)
@@ -86,50 +98,54 @@ func RepoAssignment(redirect bool) martini.Handler {
ctx.Data["Owner"] = user
ctx.Data["RepoLink"] = ctx.Repo.RepoLink
ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner
+ ctx.Data["BranchName"] = ""
ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", base.RunUser, base.Domain, user.LowerName, repo.LowerName)
ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s%s/%s.git", base.AppUrl, user.LowerName, repo.LowerName)
ctx.Data["CloneLink"] = ctx.Repo.CloneLink
- if repo.IsBare {
- ctx.Data["IsBareRepo"] = true
- ctx.HTML(200, "repo/single_bare")
- return
- }
-
- detect:
- if len(branchName) > 0 {
- // TODO check tag
- if models.IsBranchExist(user.Name, repoName, branchName) {
- ctx.Repo.IsBranch = true
- ctx.Repo.BranchName = branchName
-
- ctx.Repo.Commit, err = gitRepo.GetCommitOfBranch(branchName)
- if err != nil {
- ctx.Handle(404, "RepoAssignment invalid branch", nil)
+ // when repo is bare, not valid branch
+ if !ctx.Repo.Repository.IsBare && validBranch {
+ detect:
+ if len(branchName) > 0 {
+ // TODO check tag
+ if models.IsBranchExist(user.Name, repoName, branchName) {
+ ctx.Repo.IsBranch = true
+ ctx.Repo.BranchName = branchName
+
+ ctx.Repo.Commit, err = gitRepo.GetCommitOfBranch(branchName)
+ if err != nil {
+ ctx.Handle(404, "RepoAssignment invalid branch", nil)
+ return
+ }
+
+ ctx.Repo.CommitId = ctx.Repo.Commit.Oid.String()
+
+ } else if len(branchName) == 40 {
+ ctx.Repo.IsCommit = true
+ ctx.Repo.CommitId = branchName
+ ctx.Repo.BranchName = branchName
+
+ ctx.Repo.Commit, err = gitRepo.GetCommit(branchName)
+ if err != nil {
+ ctx.Handle(404, "RepoAssignment invalid commit", nil)
+ return
+ }
+ } else {
+ ctx.Handle(404, "RepoAssignment invalid repo", nil)
return
}
- ctx.Repo.CommitId = ctx.Repo.Commit.Oid.String()
-
- } else if len(branchName) == 40 {
- ctx.Repo.IsCommit = true
- ctx.Repo.CommitId = branchName
- ctx.Repo.BranchName = branchName
-
- ctx.Repo.Commit, err = gitRepo.GetCommit(branchName)
- if err != nil {
- ctx.Handle(404, "RepoAssignment invalid commit", nil)
- return
- }
} else {
- ctx.Handle(404, "RepoAssignment invalid repo", nil)
- return
+ branchName = "master"
+ goto detect
}
+ }
- } else {
- branchName = "master"
- goto detect
+ // repo is bare and display enable
+ if displayBare && ctx.Repo.Repository.IsBare {
+ ctx.HTML(200, "repo/single_bare")
+ return
}
if ctx.IsSigned {
diff --git a/routers/repo/repo.go b/routers/repo/repo.go
index 27c806a3b1..5b0a165d5c 100644
--- a/routers/repo/repo.go
+++ b/routers/repo/repo.go
@@ -78,6 +78,7 @@ func Single(ctx *middleware.Context, params martini.Params) {
ctx.Handle(404, "repo.Single(GetBranches)", err)
return
}
+
ctx.Data["Branches"] = brs
isViewBranch := ctx.Repo.IsBranch
diff --git a/templates/repo/single_bare.tmpl b/templates/repo/single_bare.tmpl
index fe0e3aa355..035e78e8b0 100644
--- a/templates/repo/single_bare.tmpl
+++ b/templates/repo/single_bare.tmpl
@@ -1,6 +1,7 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
{{template "repo/nav" .}}
+{{template "repo/toolbar" .}}
<div id="body" class="container">
<div id="source">
<div class="panel panel-default guide-box clone-group-btn">
@@ -23,15 +24,15 @@
<hr/>
<h3>Create a new repository on the command line</h3>
<pre class="text-left"><code>touch README.md
- git init
- git add README.md
- git commit -m "first commit"
- git remote add origin <span class="clone-url"></span>
- git push -u origin master</code></pre>
+git init
+git add README.md
+git commit -m "first commit"
+git remote add origin <span class="clone-url"></span>
+git push -u origin master</code></pre>
<hr/>
<h3>Push an existing repository from the command line</h3>
<pre class="text-left"><code>git remote add origin <span class="clone-url"></span>
- git push -u origin master</code></pre>
+git push -u origin master</code></pre>
</div>
</div>
</div>
diff --git a/templates/repo/toolbar.tmpl b/templates/repo/toolbar.tmpl
index 3c7c8a50e1..542f8fd860 100644
--- a/templates/repo/toolbar.tmpl
+++ b/templates/repo/toolbar.tmpl
@@ -3,7 +3,7 @@
<nav class="navbar navbar-toolbar navbar-default" role="navigation">
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
- <li class="{{if .IsRepoToolbarSource}}active{{end}}"><a href="{{.RepoLink}}{{if ne .BranchName `master`}}/src/{{.BranchName}}{{end}}">Source</a></li>
+ <li class="{{if .IsRepoToolbarSource}}active{{end}}"><a href="{{.RepoLink}}{{if .BranchName}}{{if ne .BranchName `master`}}/src/{{.BranchName}}{{end}}{{end}}">Source</a></li>
{{if not .IsBareRepo}}
<li class="{{if .IsRepoToolbarCommits}}active{{end}}"><a href="{{.RepoLink}}/commits/{{.BranchName}}">Commits</a></li>
<!-- <li class="{{if .IsRepoToolbarBranches}}active{{end}}"><a href="{{.RepoLink}}/branches">Branches</a></li> -->
diff --git a/web.go b/web.go
index 465d7da7aa..6f25271977 100644
--- a/web.go
+++ b/web.go
@@ -136,19 +136,20 @@ func runWeb(*cli.Context) {
r.Get("/issues/:index", repo.ViewIssue)
r.Get("/pulls", repo.Pulls)
r.Get("/branches", repo.Branches)
+ }, ignSignIn, middleware.RepoAssignment(true))
+
+ m.Group("/:username/:reponame", func(r martini.Router) {
r.Get("/src/:branchname", repo.Single)
r.Get("/src/:branchname/**", repo.Single)
r.Get("/raw/:branchname/**", repo.SingleDownload)
r.Get("/commits/:branchname", repo.Commits)
- }, ignSignIn, middleware.RepoAssignment(true))
-
- m.Get("/:username/:reponame/commit/:branchname/**", ignSignIn, middleware.RepoAssignment(true), repo.Diff)
- m.Get("/:username/:reponame/commit/:branchname", ignSignIn, middleware.RepoAssignment(true), repo.Diff)
+ r.Get("/commit/:branchname", repo.Diff)
+ r.Get("/commit/:branchname/**", repo.Diff)
+ }, ignSignIn, middleware.RepoAssignment(true, true))
m.Group("/:username", func(r martini.Router) {
- r.Get("/:reponame", middleware.RepoAssignment(true), repo.Single)
- r.Get("/:reponame", middleware.RepoAssignment(true), repo.Single)
r.Any("/:reponame/**", repo.Http)
+ r.Get("/:reponame", middleware.RepoAssignment(true, true, true), repo.Single)
}, ignSignIn)
// Not found handler.