diff options
author | slene <vslene@gmail.com> | 2014-03-30 13:30:17 +0800 |
---|---|---|
committer | slene <vslene@gmail.com> | 2014-03-30 13:30:17 +0800 |
commit | d6c9e3413a982fd64a74e774d4a2b8157f39f299 (patch) | |
tree | 60ec4e94acdb6925c612deb49871f57c75b64584 | |
parent | e2f63d81d3528c191e85fe228a37b5f0d58a405f (diff) | |
download | gitea-d6c9e3413a982fd64a74e774d4a2b8157f39f299.tar.gz gitea-d6c9e3413a982fd64a74e774d4a2b8157f39f299.zip |
fix display bare repo
-rw-r--r-- | modules/middleware/repo.go | 88 | ||||
-rw-r--r-- | routers/repo/repo.go | 1 | ||||
-rw-r--r-- | templates/repo/single_bare.tmpl | 13 | ||||
-rw-r--r-- | templates/repo/toolbar.tmpl | 2 | ||||
-rw-r--r-- | web.go | 13 |
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> --> @@ -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. |