diff options
-rw-r--r-- | models/publickey.go | 2 | ||||
-rw-r--r-- | models/repo.go | 16 | ||||
-rw-r--r-- | routers/repo/single.go | 59 | ||||
-rw-r--r-- | serve.go | 3 | ||||
-rw-r--r-- | templates/repo/nav.tmpl | 4 | ||||
-rw-r--r-- | templates/repo/single.tmpl | 5 | ||||
-rw-r--r-- | templates/repo/toolbar.tmpl | 5 |
7 files changed, 75 insertions, 19 deletions
diff --git a/models/publickey.go b/models/publickey.go index 021d690fb6..092436d55f 100644 --- a/models/publickey.go +++ b/models/publickey.go @@ -23,7 +23,7 @@ import ( const ( // "### autogenerated by gitgos, DO NOT EDIT\n" - TPL_PUBLICK_KEY = `command="%s serv key-%d",no-port-forwarding, no-X11-forwarding,no-agent-forwarding,no-pty %s` + TPL_PUBLICK_KEY = `command="%s serv key-%d",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty %s` ) var ( diff --git a/models/repo.go b/models/repo.go index c377747a62..6e3754acf5 100644 --- a/models/repo.go +++ b/models/repo.go @@ -223,6 +223,17 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep return err } + // hook/post-update + pu, err := os.OpenFile(filepath.Join(repoPath, "hooks", "post-update"), os.O_CREATE|os.O_WRONLY, 0777) + if err != nil { + return err + } + defer pu.Close() + // TODO: Windows .bat + if _, err = pu.WriteString(fmt.Sprintf("#!/usr/bin/env bash\n%s update\n", appPath)); err != nil { + return err + } + // Initialize repository according to user's choice. fileName := map[string]string{} if initReadme { @@ -275,11 +286,14 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep } } + if len(fileName) == 0 { + return nil + } + // Apply changes and commit. if err := initRepoCommit(tmpDir, user.NewGitSig()); err != nil { return err } - return nil } diff --git a/routers/repo/single.go b/routers/repo/single.go index e403d70e49..1b5da9d307 100644 --- a/routers/repo/single.go +++ b/routers/repo/single.go @@ -13,6 +13,7 @@ import ( "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/middleware" ) @@ -21,15 +22,18 @@ func Branches(ctx *middleware.Context, params martini.Params) { return } - ctx.Data["Username"] = params["username"] - ctx.Data["Reponame"] = params["reponame"] - brs, err := models.GetBranches(params["username"], params["reponame"]) if err != nil { ctx.Handle(200, "repo.Branches", err) return + } else if len(brs) == 0 { + ctx.Render.Error(404) + return } + ctx.Data["Username"] = params["username"] + ctx.Data["Reponame"] = params["reponame"] + ctx.Data["Branchname"] = brs[0] ctx.Data["Branches"] = brs ctx.Data["IsRepoToolbarBranches"] = true @@ -49,25 +53,32 @@ func Single(ctx *middleware.Context, params martini.Params) { // Get tree path treename := params["_1"] + // Branches. + brs, err := models.GetBranches(params["username"], params["reponame"]) + if err != nil { + log.Error("repo.Single(GetBranches): %v", err) + ctx.Render.Error(404) + return + } else if len(brs) == 0 { + ctx.Data["IsBareRepo"] = true + ctx.Render.HTML(200, "repo/single", ctx.Data) + return + } + + ctx.Data["Branches"] = brs + // Directory and file list. files, err := models.GetReposFiles(params["username"], params["reponame"], params["branchname"], treename) if err != nil { - ctx.Handle(200, "repo.Single(GetReposFiles)", err) + log.Error("repo.Single(GetReposFiles): %v", err) + ctx.Render.Error(404) return } ctx.Data["Username"] = params["username"] ctx.Data["Reponame"] = params["reponame"] ctx.Data["Branchname"] = params["branchname"] - // Branches. - brs, err := models.GetBranches(params["username"], params["reponame"]) - if err != nil { - ctx.Handle(200, "repo.Single(GetBranches)", err) - return - } - ctx.Data["Branches"] = brs - var treenames []string Paths := make([]string, 0) @@ -81,7 +92,8 @@ func Single(ctx *middleware.Context, params martini.Params) { // Get latest commit according username and repo name commit, err := models.GetLastestCommit(params["username"], params["reponame"]) if err != nil { - ctx.Handle(200, "repo.Single(GetLastestCommit)", err) + log.Error("repo.Single(GetLastestCommit): %v", err) + ctx.Render.Error(404) return } ctx.Data["LatestCommit"] = commit @@ -126,6 +138,18 @@ func Setting(ctx *middleware.Context, params martini.Params) { return } + // Branches. + brs, err := models.GetBranches(params["username"], params["reponame"]) + if err != nil { + log.Error("repo.Setting(GetBranches): %v", err) + ctx.Render.Error(404) + return + } else if len(brs) == 0 { + ctx.Data["IsBareRepo"] = true + ctx.Render.HTML(200, "repo/setting", ctx.Data) + return + } + var title string if t, ok := ctx.Data["Title"].(string); ok { title = t @@ -137,6 +161,15 @@ func Setting(ctx *middleware.Context, params martini.Params) { } func Commits(ctx *middleware.Context, params martini.Params) { + brs, err := models.GetBranches(params["username"], params["reponame"]) + if err != nil { + ctx.Handle(200, "repo.Commits", err) + return + } else if len(brs) == 0 { + ctx.Render.Error(404) + return + } + ctx.Data["IsRepoToolbarCommits"] = true commits, err := models.GetCommits(params["username"], params["reponame"], params["branchname"]) @@ -149,8 +149,7 @@ func runServ(*cli.Context) { gitcmd.Stdin = os.Stdin gitcmd.Stderr = os.Stderr - err = gitcmd.Run() - if err != nil { + if err = gitcmd.Run(); err != nil { println("execute command error:", err.Error()) } } diff --git a/templates/repo/nav.tmpl b/templates/repo/nav.tmpl index b41b62d5d8..1f74bc306e 100644 --- a/templates/repo/nav.tmpl +++ b/templates/repo/nav.tmpl @@ -4,10 +4,11 @@ <div class="col-md-6"> <h3><i class="fa fa-book fa-lg"></i><a href="{{.Owner.HomeLink}}">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3> </div> + {{if not .IsBareRepo}} <div class="col-md-6 actions text-right"> <div class="btn-group" id="gogs-repo-clone"> <button type="button" class="btn btn-default"><i class="fa fa-download"></i>Clone</button> - <button type="button" class="btn btn-default dropdown-toggle" data-container="body" data-toggle="popover" data-placement="bottom" data-content="<label>SSH:</label><div class='input-group'><input type='text' class='form-control' value='git@{{AppDomain}}:{{.Owner.Name}}/{{.Repository.Name}}.git'></div>" data-html="1"> + <button type="button" class="btn btn-default dropdown-toggle" data-container="body" data-toggle="popover" data-placement="bottom" data-content="<label>SSH:</label><div class='input-group'><input type='text' class='form-control' value='git@{{AppDomain}}:{{.Owner.LowerName}}/{{.Repository.Name}}.git'></div>" data-html="1"> <span class="caret"></span> </button> </div> @@ -36,6 +37,7 @@ <button type="button" class="btn btn-default"><i class="fa fa-code-fork"></i>Fork {{.Repository.NumForks}}</button> </div> </div> + {{end}} </div> </div> </div>
\ No newline at end of file diff --git a/templates/repo/single.tmpl b/templates/repo/single.tmpl index cbc82e51c1..019ec8eaaa 100644 --- a/templates/repo/single.tmpl +++ b/templates/repo/single.tmpl @@ -4,6 +4,9 @@ {{template "repo/toolbar" .}} <div id="gogs-body" class="container"> <div id="gogs-source"> + {{if .IsBareRepo}} + Need to fill in some guide. + {{else}} <div class="source-toolbar"> {{ $username := .Username}} {{ $reponame := .Reponame}} @@ -36,6 +39,7 @@ {{end}} </ol> </div> + <div class="panel panel-default info-box"> <div class="panel-heading info-head"> <a href="/{{$username}}/{{$reponame}}/commit/{{.LatestCommit.SHA}}">{{.LatestCommit.Message}}</a> @@ -95,6 +99,7 @@ {{end}} </div> {{end}} + {{end}} </div> </div> {{template "base/footer" .}}
\ No newline at end of file diff --git a/templates/repo/toolbar.tmpl b/templates/repo/toolbar.tmpl index c6e5f5f3c6..5cd9f526b4 100644 --- a/templates/repo/toolbar.tmpl +++ b/templates/repo/toolbar.tmpl @@ -4,6 +4,7 @@ <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="{{if .IsRepoToolbarSource}}active{{end}}"><a href="/{{.RepositoryLink}}">Source</a></li> + {{if not .IsBareRepo}} <li class="{{if .IsRepoToolbarCommits}}active{{end}}"><a href="/{{.RepositoryLink}}/commits/{{.Branchname}}">Commits</a></li> <li class="{{if .IsRepoToolbarBranches}}active{{end}}"><a href="/{{.RepositoryLink}}/branches">Branches</a></li> <li class="{{if .IsRepoToolbarPulls}}active{{end}}"><a href="/{{.RepositoryLink}}/pulls">Pull Requests</a></li> @@ -16,7 +17,9 @@ </ul> </li> </ul> + {{end}} <ul class="nav navbar-nav navbar-right"> + {{if not .IsBareRepo}} <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Statistic <b class="caret"></b></a> <ul class="dropdown-menu"> @@ -24,7 +27,7 @@ <li><a href="#">Pulse</a></li> <li><a href="#">Network</a></li> </ul> - </li>{{if .IsRepositoryOwner}} + </li>{{end}}{{if .IsRepositoryOwner}} <li class="{{if .IsRepoToolbarSetting}}active{{end}}"><a href="/{{.RepositoryLink}}/settings">Settings</a> </li>{{end}} </ul> |