Add raw, history file button, and other mirror fixes
This commit is contained in:
parent
17c1bc7383
commit
963354c5d7
|
@ -38,6 +38,7 @@ The goal of this project is to make the easiest, fastest and most painless way t
|
|||
- Create/migrate/mirror/delete/watch/rename/transfer public/private repository
|
||||
- Repository viewer/release/issue tracker
|
||||
- Repository and Organization level webhooks
|
||||
- Repository Git hooks
|
||||
- Add/remove repository collaborators
|
||||
- Gravatar and cache support
|
||||
- Mail service(register, issue)
|
||||
|
|
17
README_ZH.md
17
README_ZH.md
|
@ -24,14 +24,15 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
|||
- 支持 SSH/HTTP(S) 协议
|
||||
- 支持 SMTP/LDAP/反向代理 用户认证
|
||||
- 支持反向代理子路径
|
||||
- 注册/删除/重命名 用户
|
||||
- 创建/管理/删除 组织以及团队管理功能
|
||||
- 创建/迁移/镜像/删除/关注/重命名/转移 公开/私有 仓库
|
||||
- 仓库 浏览/发布/工单管理
|
||||
- 仓库和组织级别 Web 钩子
|
||||
- 添加/删除 仓库协作者
|
||||
- Gravatar 以及缓存支持
|
||||
- 邮件服务(注册、Issue)
|
||||
- 支持 注册/删除/重命名 用户
|
||||
- 支持 创建/管理/删除 组织以及团队管理功能
|
||||
- 支持 创建/迁移/镜像/删除/关注/重命名/转移 公开/私有 仓库
|
||||
- 支持仓库 浏览/发布/工单管理
|
||||
- 支持仓库和组织级别 Web 钩子
|
||||
- 支持仓库 Git 钩子
|
||||
- 支持 添加/删除 仓库协作者
|
||||
- 支持 Gravatar 以及本地缓存
|
||||
- 支持邮件服务(注册、Issue)
|
||||
- 管理员面板
|
||||
- Slack Web 钩子集成
|
||||
- 支持 MySQL、PostgreSQL 以及 SQLite3 数据库
|
||||
|
|
|
@ -273,6 +273,9 @@ tags = Tags
|
|||
issues = Issues
|
||||
commits = Commits
|
||||
releases = Releases
|
||||
file_raw = Raw
|
||||
file_history = History
|
||||
file_view_raw = View Raw
|
||||
|
||||
commits.commits = Commits
|
||||
commits.search = Search commits
|
||||
|
|
|
@ -273,6 +273,9 @@ tags = 标签列表
|
|||
issues = 工单管理
|
||||
commits = 提交历史
|
||||
releases = 版本发布
|
||||
file_raw = 原始文件
|
||||
file_history = 文件历史
|
||||
file_view_raw = 查看原始文件
|
||||
|
||||
commits.commits = 次代码提交
|
||||
commits.search = 搜索提交历史
|
||||
|
|
2
gogs.go
2
gogs.go
|
@ -17,7 +17,7 @@ import (
|
|||
"github.com/gogits/gogs/modules/setting"
|
||||
)
|
||||
|
||||
const APP_VER = "0.5.5.1010 Beta"
|
||||
const APP_VER = "0.5.5.1011 Beta"
|
||||
|
||||
func init() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
|
|
|
@ -663,7 +663,7 @@ func RepoPath(userName, repoName string) string {
|
|||
func TransferOwnership(u *User, newOwner string, repo *Repository) error {
|
||||
newUser, err := GetUserByName(newOwner)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("fail to get new owner(%s): %v", newOwner, err)
|
||||
}
|
||||
|
||||
// Check if new owner has repository with same name.
|
||||
|
|
|
@ -488,7 +488,7 @@ func GetUserByName(name string) (*User, error) {
|
|||
return user, nil
|
||||
}
|
||||
|
||||
// GetUserEmailsByNames returns a slice of e-mails corresponds to names.
|
||||
// GetUserEmailsByNames returns a list of e-mails corresponds to names.
|
||||
func GetUserEmailsByNames(names []string) []string {
|
||||
mails := make([]string, 0, len(names))
|
||||
for _, name := range names {
|
||||
|
|
|
@ -75,12 +75,6 @@ type Context struct {
|
|||
}
|
||||
}
|
||||
|
||||
// Query querys form parameter.
|
||||
func (ctx *Context) Query(name string) string {
|
||||
ctx.Req.ParseForm()
|
||||
return ctx.Req.Form.Get(name)
|
||||
}
|
||||
|
||||
// HasError returns true if error occurs in form validation.
|
||||
func (ctx *Context) HasApiError() bool {
|
||||
hasErr, ok := ctx.Data["HasError"]
|
||||
|
|
|
@ -457,6 +457,9 @@ dt {
|
|||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
}
|
||||
.btn-comb {
|
||||
margin-left: -1px;
|
||||
}
|
||||
.btn-disabled {
|
||||
opacity: .6;
|
||||
cursor: not-allowed;
|
||||
|
|
|
@ -102,6 +102,9 @@
|
|||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
}
|
||||
.btn-comb {
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
.btn-disabled {
|
||||
opacity: .6;
|
||||
|
|
|
@ -276,13 +276,15 @@ func FileHistory(ctx *middleware.Context) {
|
|||
nextPage = 0
|
||||
}
|
||||
|
||||
ctx.Data["Commits"], err = ctx.Repo.GitRepo.CommitsByFileAndRange(
|
||||
commits, err := ctx.Repo.GitRepo.CommitsByFileAndRange(
|
||||
branchName, fileName, page)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "repo.FileHistory(CommitsByRange)", err)
|
||||
return
|
||||
}
|
||||
commits = models.ValidateCommitsWithEmails(commits)
|
||||
|
||||
ctx.Data["Commits"] = commits
|
||||
ctx.Data["Username"] = userName
|
||||
ctx.Data["Reponame"] = repoName
|
||||
ctx.Data["FileName"] = fileName
|
||||
|
|
|
@ -166,7 +166,7 @@ func Home(ctx *middleware.Context) {
|
|||
}
|
||||
|
||||
if readmeFile != nil {
|
||||
ctx.Data["ReadmeInHome"] = true
|
||||
ctx.Data["ReadmeInList"] = true
|
||||
ctx.Data["ReadmeExist"] = true
|
||||
if dataRc, err := readmeFile.Data(); err != nil {
|
||||
ctx.Handle(404, "repo.SinglereadmeFile.LookupBlob", err)
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.5.5.1010 Beta
|
||||
0.5.5.1011 Beta
|
|
@ -58,7 +58,7 @@
|
|||
<td>{{.Pid}}</td>
|
||||
<td>{{.Description}}</td>
|
||||
<td>{{.Start}}</td>
|
||||
<td>{{TimeSince .Start .i18n.Lang}}</td>
|
||||
<td>{{TimeSince .Start $.Lang}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
|
|
|
@ -54,16 +54,16 @@
|
|||
{{end}}
|
||||
{{end}}
|
||||
</li>
|
||||
<!-- <li id="repo-commits-jump" class="repo-jump right">
|
||||
<li id="repo-commits-jump" class="repo-jump right">
|
||||
<a href="#">
|
||||
<button class="btn btn-small btn-gray btn-right-radius"><i class="octicon octicon-git-commit"></i></button>
|
||||
</a>
|
||||
</li>
|
||||
<li id="repo-find-jump" class="repo-jump right">
|
||||
<a href="#">
|
||||
<button class="btn btn-small btn-gray btn-left-radius"><i class="octicon octicon-list-unordered"></i></button>
|
||||
<button class="btn btn-small btn btn-small btn-gray btn-left-radius"><i class="octicon octicon-list-unordered"></i></button>
|
||||
</a>
|
||||
</li> -->
|
||||
</li>
|
||||
</ul>
|
||||
{{if .IsFile}}
|
||||
{{template "repo/view_file" .}}
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
{{template "base/head" .}}
|
||||
{{template "base/navbar" .}}
|
||||
{{template "repo/nav" .}}
|
||||
{{template "repo/toolbar" .}}
|
||||
<div id="body" class="container">
|
||||
<div id="source">
|
||||
<div class="source-toolbar">
|
||||
{{ $n := len .Treenames}}
|
||||
{{if not .IsFile}}<button class="btn btn-default pull-right hidden"><i class="fa fa-plus-square"></i>Add File</button>{{end}}
|
||||
<div class="dropdown branch-switch">
|
||||
<a href="#" class="btn btn-success dropdown-toggle" data-toggle="dropdown"><i class="fa fa-chain"></i>{{if .IsBranch}}{{.BranchName}}{{else}}{{ShortSha .CommitId}}{{end}}
|
||||
<b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
{{range .Branches}}
|
||||
<li><a {{if eq . $.BranchName}}class="current" {{end}}href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/src/{{.}}">{{.}}</a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
{{ $l := Subtract $n 1}}
|
||||
<ol class="breadcrumb">
|
||||
<li class="root dir">
|
||||
<a href="{{.BranchLink}}">{{.Repository.Name}}</a></li>
|
||||
{{range $i, $v := .Treenames}}
|
||||
<li class="dir">
|
||||
{{if eq $i $l}}{{$v}}
|
||||
{{else}}
|
||||
<a href="{{$.BranchLink}}/{{index $.Paths $i}}">{{$v}}</a>
|
||||
{{end}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ol>
|
||||
</div>
|
||||
{{if .IsFile}}
|
||||
{{template "repo/single_file" .}}
|
||||
{{else}}
|
||||
{{template "repo/single_list" .}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{template "base/footer" .}}
|
|
@ -1,40 +0,0 @@
|
|||
{{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">
|
||||
<div class="panel-heading guide-head">
|
||||
<h4>Quick Guide</h4>
|
||||
</div>
|
||||
<div class="panel-body guide-content text-center">
|
||||
<h3>Clone this repository</h3>
|
||||
<div class="input-group col-md-8 col-md-offset-2 guide-buttons">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" data-link="{{.CloneLink.SSH}}" type="button">SSH</button>
|
||||
<button class="btn btn-default" data-link="{{.CloneLink.HTTPS}}" type="button">HTTPS</button>
|
||||
</span>
|
||||
<input type="text" class="form-control clone-group-url" id="guide-clone-url" value="" readonly/>
|
||||
<span class="input-group-btn" style="position: relative">
|
||||
<button class="btn btn-default" type="button" data-toggle="tooltip" title="copy to clipboard" data-placement="top" data-init="copy" data-copy-val="val" data-copy-from="#guide-clone-url"><i class="fa fa-copy"></i></button>
|
||||
</span>
|
||||
</div>
|
||||
<p>We recommend every repository include a <strong>README</strong>, <strong>LICENSE</strong>, and <strong>.gitignore</strong>.</p>
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{template "base/footer" .}}
|
|
@ -1,51 +0,0 @@
|
|||
<div class="panel panel-default file-content">
|
||||
<div class="panel-heading file-head">
|
||||
{{if .ReadmeExist}}
|
||||
<i class="icon fa fa-book"></i>
|
||||
{{if .ReadmeInSingle}}
|
||||
{{.FileName}}
|
||||
{{else}}
|
||||
{{.FileName}} <span class="file-size">{{FileSize .FileSize}}</span>
|
||||
{{end}}
|
||||
{{else}}
|
||||
<i class="icon fa fa-file-text-o"></i>
|
||||
{{.FileName}} <span class="file-size">{{FileSize .FileSize}}</span>
|
||||
{{end}}
|
||||
{{if not .ReadmeInSingle}}
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-default hidden" href="#">Edit</a>
|
||||
<a class="btn btn-default" href="{{.FileLink}}" rel="nofollow">Raw</a>
|
||||
<a class="btn btn-default hidden" href="#">Blame</a>
|
||||
<a class="btn btn-default" href="{{.RepoLink}}/commits/{{.BranchName}}/{{.TreeName}}">History</a>
|
||||
<a class="btn btn-danger hidden" href="#">Delete</a>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
{{if not .FileIsText}}
|
||||
<div class="panel-body file-body file-code code-view">
|
||||
{{if .IsImageFile}}
|
||||
<img src="{{.FileLink}}">
|
||||
{{else}}
|
||||
<a href="{{.FileLink}}" rel="nofollow" class="btn btn-default">View Raw</a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{if .ReadmeExist}}
|
||||
<div class="panel-body file-body markdown">
|
||||
{{.FileContent|str2html}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="panel-body file-body file-code code-view">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="lines-num"></td>
|
||||
<td class="lines-code markdown"><pre class="prettyprint linenums{{if .FileExt}} lang-{{.FileExt}}{{end}}">{{.FileContent}}</pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
|
@ -1,51 +0,0 @@
|
|||
<div class="panel panel-default info-box">
|
||||
<div class="panel-heading info-head">
|
||||
<a href="{{AppSubUrl}}/{{.Username}}/{{.Reponame}}/commit/{{.LastCommit.Id}}" rel="nofollow">{{.LastCommit.Summary}}</a>
|
||||
</div>
|
||||
<div class="panel-body info-content">
|
||||
<a href="{{AppSubUrl}}/user/{{.LastCommit.Author.Name}}">{{.LastCommit.Author.Name}}</a> <span class="text-muted">{{TimeSince .LastCommit.Author.When}}</span>
|
||||
</div>
|
||||
<table class="panel-footer table file-list">
|
||||
<thead class="hidden">
|
||||
<tr>
|
||||
<th class="icon"></th>
|
||||
<th class="name">Filename</th>
|
||||
<th class="text">Message</th>
|
||||
<th class="date">Date modified</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if .HasParentPath}}
|
||||
<tr class="has-parent">
|
||||
<td class="icon"><a href="{{.BranchLink}}{{.ParentPath}}"><i class="fa fa-reply"></i></a></td>
|
||||
<td class="name"><a href="{{.BranchLink}}{{.ParentPath}}">..</a></td>
|
||||
<td class="text"></td>
|
||||
<td class="date"></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{range $item := .Files}}
|
||||
{{$entry := index $item 0}}
|
||||
{{$commit := index $item 1}}
|
||||
<tr {{if $entry.IsDir}}class="is-dir"{{end}}>
|
||||
<td class="icon">
|
||||
<i class="fa {{if $entry.IsDir}}fa-folder{{else}}fa-file-text-o{{end}}"></i>
|
||||
</td>
|
||||
<td class="name">
|
||||
<span class="wrap">
|
||||
<a href="{{$.BranchLink}}/{{$.TreePath}}{{$entry.Name}}">{{$entry.Name}}</a>
|
||||
</span>
|
||||
</td>
|
||||
<td class="text">
|
||||
<span class="wrap"><a rel="nofollow" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.Id}}">{{$commit.Summary}}</a></span>
|
||||
</td>
|
||||
<td class="date">
|
||||
<span class="wrap">{{TimeSince $commit.Committer.When}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{if .ReadmeExist}}
|
||||
{{template "repo/single_file" .}}
|
||||
{{end}}
|
|
@ -2,7 +2,7 @@
|
|||
<p class="panel-header">
|
||||
{{if .ReadmeExist}}
|
||||
<i class="icon fa fa-book fa-lg"></i>
|
||||
{{if .ReadmeInHome}}
|
||||
{{if .ReadmeInList}}
|
||||
<strong class="file-name">{{.FileName}}</strong>
|
||||
{{else}}
|
||||
<strong>{{.FileName}}</strong><span class="file-size">{{FileSize .FileSize}}</span>
|
||||
|
@ -11,6 +11,14 @@
|
|||
<i class="icon fa fa-file-text-o"></i>
|
||||
<strong class="file-name">{{.FileName}}</strong><span class="file-size">{{FileSize .FileSize}}</span>
|
||||
{{end}}
|
||||
{{if not .ReadmeInList}}
|
||||
<a class="right" href="{{.RepoLink}}/commits/{{.BranchName}}/{{.TreeName}}">
|
||||
<button class="btn btn-medium btn-gray btn-right-radius btn-comb">{{.i18n.Tr "repo.file_history"}}</button>
|
||||
</a>
|
||||
<a class="right" href="{{.FileLink}}">
|
||||
<button class="btn btn-medium btn-gray btn-left-radius btn-comb">{{.i18n.Tr "repo.file_raw"}}</button>
|
||||
</a>
|
||||
{{end}}
|
||||
</p>
|
||||
<div class="{{if .ReadmeExist}}panel-content markdown{{end}} code-view" id="repo-code-view">
|
||||
{{if .ReadmeExist}}
|
||||
|
@ -20,7 +28,7 @@
|
|||
{{if .IsImageFile}}
|
||||
<img src="{{.FileLink}}">
|
||||
{{else}}
|
||||
<a href="{{.FileLink}}" rel="nofollow" class="btn btn-gray btn-radius">View Raw</a>
|
||||
<a href="{{.FileLink}}" rel="nofollow" class="btn btn-gray btn-radius">{{.i18n.Tr "repo.file_view_raw"}}</a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else if .FileSize}}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<strong>{{ShortSha .LastCommit.Id.String}}</strong></a>
|
||||
<span class="text-truncate">{{.LastCommit.Summary}}</span>
|
||||
</span>
|
||||
<span class="age right">{{TimeSince .LastCommit.Author.When .i18n.Lang}}</span>
|
||||
<span class="age right">{{TimeSince .LastCommit.Author.When $.Lang}}</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -45,7 +45,7 @@
|
|||
<td class="msg">
|
||||
<a class="text-truncate" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.Id}}" rel="nofollow">{{$commit.Summary}}</a>
|
||||
</td>
|
||||
<td class="age">{{TimeSince $commit.Committer.When $.i18n.Lang}}</td>
|
||||
<td class="age">{{TimeSince $commit.Committer.When $.Lang}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
|
|
Loading…
Reference in New Issue