]> source.dussan.org Git - gitea.git/commitdiff
fix display bare repo
authorslene <vslene@gmail.com>
Sun, 30 Mar 2014 05:30:17 +0000 (13:30 +0800)
committerslene <vslene@gmail.com>
Sun, 30 Mar 2014 05:30:17 +0000 (13:30 +0800)
modules/middleware/repo.go
routers/repo/repo.go
templates/repo/single_bare.tmpl
templates/repo/toolbar.tmpl
web.go

index deb282865ef9f8b22b2761652c9b1b86d685fe48..559e90c0cf58061d87d7caa409757b6cd63ed0e6 100644 (file)
@@ -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 {
index 27c806a3b14ff018568b109b19c918978f448f05..5b0a165d5c57fbfe44b0c5a9c41deee3544e3f89 100644 (file)
@@ -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
index fe0e3aa35595f79ce8ebbb02f88e5cf7f66f278b..035e78e8b0dc3bfd86ceaf88575b14075c570137 100644 (file)
@@ -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">
                 <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>
index 3c7c8a50e12575fd185ffff8512d3bfec0eb4387..542f8fd86017343246a368d1d057e414dbc09f85 100644 (file)
@@ -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 465d7da7aa4939012124e3c9773295cdab30ebcd..6f25271977f10890dfbf2e18cb3a82111a9a1233 100644 (file)
--- 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.