mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 01:34:27 +00:00 
			
		
		
		
	fix display bare repo
This commit is contained in:
		@@ -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
 | 
			
		||||
		// 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
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			} else {
 | 
			
		||||
				branchName = "master"
 | 
			
		||||
				goto detect
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	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
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		} 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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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> -->
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								web.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user