@@ -370,7 +370,7 @@ func runWeb(*cli.Context) { | |||
m.Group("/:username/:reponame", func() { | |||
m.Post("/releases/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost) | |||
m.Post("/releases/edit/:tagname", bindIgnErr(auth.EditReleaseForm{}), repo.EditReleasePost) | |||
}, reqSignIn, middleware.RepoAssignment(true, true)) | |||
}, reqSignIn, middleware.RepoAssignment(true)) | |||
m.Group("/:username/:reponame", func() { | |||
m.Get("/issues", repo.Issues) | |||
@@ -382,20 +382,18 @@ func runWeb(*cli.Context) { | |||
}, ignSignIn, middleware.RepoAssignment(true)) | |||
m.Group("/:username/:reponame", func() { | |||
m.Get("/src/:branchname", repo.Home) | |||
m.Get("/src/:branchname/*", repo.Home) | |||
m.Get("/raw/:branchname/*", repo.SingleDownload) | |||
m.Get("/commits/:branchname", repo.Commits) | |||
m.Get("/commits/:branchname/search", repo.SearchCommits) | |||
m.Get("/commits/:branchname/*", repo.FileHistory) | |||
m.Get("/commit/:branchname", repo.Diff) | |||
m.Get("/commit/:branchname/*", repo.Diff) | |||
m.Group("", func() { | |||
m.Get("/src/*", repo.Home) | |||
m.Get("/raw/*", repo.SingleDownload) | |||
m.Get("/commits/*", repo.RefCommits) | |||
m.Get("/commit/*", repo.Diff) | |||
}, middleware.RepoRef()) | |||
m.Get("/releases", repo.Releases) | |||
m.Get("/compare/:before([a-z0-9]+)...:after([a-z0-9]+)", repo.CompareDiff) | |||
}, ignSignIn, middleware.RepoAssignment(true, true)) | |||
}, ignSignIn, middleware.RepoAssignment(true)) | |||
m.Group("/:username", func() { | |||
m.Get("/:reponame", ignSignIn, middleware.RepoAssignment(true, true, true), repo.Home) | |||
m.Get("/:reponame", ignSignIn, middleware.RepoAssignment(true, true), middleware.RepoRef(), repo.Home) | |||
m.Any("/:reponame/*", ignSignInAndCsrf, repo.Http) | |||
}) | |||
@@ -168,6 +168,8 @@ org_still_own_repo = This organization still have ownership of repository, you h | |||
still_own_user = This authentication still has used by some users, you should move them and then delete again. | |||
target_branch_not_exist = Target branch does not exist | |||
[user] | |||
change_avatar = Change your avatar at gravatar.com | |||
join_on = Joined on |
@@ -17,7 +17,7 @@ import ( | |||
"github.com/gogits/gogs/modules/setting" | |||
) | |||
const APP_VER = "0.5.7.1105 Beta" | |||
const APP_VER = "0.5.7.1106 Beta" | |||
func init() { | |||
runtime.GOMAXPROCS(runtime.NumCPU()) |
@@ -53,6 +53,7 @@ type Context struct { | |||
GitRepo *git.Repository | |||
BranchName string | |||
TagName string | |||
TreeName string | |||
CommitId string | |||
RepoLink string | |||
CloneLink struct { | |||
@@ -176,7 +177,10 @@ func Contexter() macaron.Handler { | |||
ctx.IsSigned = true | |||
ctx.Data["IsSigned"] = ctx.IsSigned | |||
ctx.Data["SignedUser"] = ctx.User | |||
ctx.Data["SignedUserName"] = ctx.User.Name | |||
ctx.Data["IsAdmin"] = ctx.User.IsAdmin | |||
} else { | |||
ctx.Data["SignedUserName"] = "" | |||
} | |||
// If request sends files, parse them here otherwise the Query() can't be parsed and the CsrfToken will be invalid. |
@@ -18,17 +18,110 @@ import ( | |||
"github.com/gogits/gogs/modules/setting" | |||
) | |||
// RepoRef handles repository reference name including those contain `/`. | |||
func RepoRef() macaron.Handler { | |||
return func(ctx *Context) { | |||
var ( | |||
refName string | |||
err error | |||
) | |||
// Get default branch. | |||
if len(ctx.Params("*")) == 0 { | |||
refName = ctx.Repo.Repository.DefaultBranch | |||
if !ctx.Repo.GitRepo.IsBranchExist(refName) { | |||
brs, err := ctx.Repo.GitRepo.GetBranches() | |||
if err != nil { | |||
ctx.Handle(500, "GetBranches", err) | |||
return | |||
} | |||
refName = brs[0] | |||
} | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommitOfBranch(refName) | |||
if err != nil { | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
ctx.Repo.IsBranch = true | |||
ctx.Repo.BranchName = refName | |||
} else { | |||
hasMatched := false | |||
parts := strings.Split(ctx.Params("*"), "/") | |||
for i, part := range parts { | |||
refName = strings.TrimPrefix(refName+"/"+part, "/") | |||
if ctx.Repo.GitRepo.IsBranchExist(refName) || | |||
ctx.Repo.GitRepo.IsTagExist(refName) { | |||
if i < len(parts)-1 { | |||
ctx.Repo.TreeName = strings.Join(parts[i+1:], "/") | |||
} | |||
hasMatched = true | |||
break | |||
} | |||
} | |||
if !hasMatched && len(parts[0]) == 40 { | |||
refName = parts[0] | |||
ctx.Repo.TreeName = strings.Join(parts[1:], "/") | |||
} | |||
if ctx.Repo.GitRepo.IsBranchExist(refName) { | |||
ctx.Repo.IsBranch = true | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommitOfBranch(refName) | |||
if err != nil { | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
} else if ctx.Repo.GitRepo.IsTagExist(refName) { | |||
ctx.Repo.IsTag = true | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommitOfTag(refName) | |||
if err != nil { | |||
ctx.Handle(500, "GetCommitOfTag", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
} else if len(refName) == 40 { | |||
ctx.Repo.IsCommit = true | |||
ctx.Repo.CommitId = refName | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommit(refName) | |||
if err != nil { | |||
ctx.Handle(404, "GetCommit", nil) | |||
return | |||
} | |||
} else { | |||
ctx.Handle(404, "RepoRef invalid repo", fmt.Errorf("branch or tag not exist: %s", refName)) | |||
return | |||
} | |||
} | |||
ctx.Repo.BranchName = refName | |||
ctx.Data["BranchName"] = ctx.Repo.BranchName | |||
ctx.Data["CommitId"] = ctx.Repo.CommitId | |||
ctx.Data["IsBranch"] = ctx.Repo.IsBranch | |||
ctx.Data["IsTag"] = ctx.Repo.IsTag | |||
ctx.Data["IsCommit"] = ctx.Repo.IsCommit | |||
ctx.Repo.CommitsCount, err = ctx.Repo.Commit.CommitsCount() | |||
if err != nil { | |||
ctx.Handle(500, "CommitsCount", err) | |||
return | |||
} | |||
ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount | |||
} | |||
} | |||
func RepoAssignment(redirect bool, args ...bool) macaron.Handler { | |||
return func(ctx *Context) { | |||
var ( | |||
validBranch bool // To valid brach name. | |||
displayBare bool // To display bare page if it is a bare repo. | |||
) | |||
if len(args) >= 1 { | |||
validBranch = args[0] | |||
} | |||
if len(args) >= 2 { | |||
displayBare = args[1] | |||
displayBare = args[0] | |||
} | |||
var ( | |||
@@ -201,71 +294,71 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler { | |||
} | |||
// when repo is bare, not valid branch | |||
if !ctx.Repo.Repository.IsBare && validBranch { | |||
detect: | |||
if len(refName) > 0 { | |||
if gitRepo.IsBranchExist(refName) { | |||
ctx.Repo.IsBranch = true | |||
ctx.Repo.BranchName = refName | |||
ctx.Repo.Commit, err = gitRepo.GetCommitOfBranch(refName) | |||
if err != nil { | |||
ctx.Handle(500, "RepoAssignment invalid branch", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
} else if gitRepo.IsTagExist(refName) { | |||
ctx.Repo.IsTag = true | |||
ctx.Repo.BranchName = refName | |||
ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommitOfTag(refName) | |||
if err != nil { | |||
ctx.Handle(500, "Fail to get tag commit", err) | |||
return | |||
} | |||
ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
} else if len(refName) == 40 { | |||
ctx.Repo.IsCommit = true | |||
ctx.Repo.CommitId = refName | |||
ctx.Repo.BranchName = refName | |||
ctx.Repo.Commit, err = gitRepo.GetCommit(refName) | |||
if err != nil { | |||
ctx.Handle(404, "RepoAssignment invalid commit", nil) | |||
return | |||
} | |||
} else { | |||
ctx.Handle(404, "RepoAssignment invalid repo", fmt.Errorf("branch or tag not exist: %s", refName)) | |||
return | |||
} | |||
} else { | |||
if len(refName) == 0 { | |||
if gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) { | |||
refName = ctx.Repo.Repository.DefaultBranch | |||
} else { | |||
brs, err := gitRepo.GetBranches() | |||
if err != nil { | |||
ctx.Handle(500, "GetBranches", err) | |||
return | |||
} | |||
refName = brs[0] | |||
} | |||
} | |||
goto detect | |||
} | |||
ctx.Data["IsBranch"] = ctx.Repo.IsBranch | |||
ctx.Data["IsTag"] = ctx.Repo.IsTag | |||
ctx.Data["IsCommit"] = ctx.Repo.IsCommit | |||
ctx.Repo.CommitsCount, err = ctx.Repo.Commit.CommitsCount() | |||
if err != nil { | |||
ctx.Handle(500, "CommitsCount", err) | |||
return | |||
} | |||
ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount | |||
} | |||
// if !ctx.Repo.Repository.IsBare && validBranch { | |||
// detect: | |||
// if len(refName) > 0 { | |||
// if gitRepo.IsBranchExist(refName) { | |||
// ctx.Repo.IsBranch = true | |||
// ctx.Repo.BranchName = refName | |||
// ctx.Repo.Commit, err = gitRepo.GetCommitOfBranch(refName) | |||
// if err != nil { | |||
// ctx.Handle(500, "RepoAssignment invalid branch", err) | |||
// return | |||
// } | |||
// ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
// } else if gitRepo.IsTagExist(refName) { | |||
// ctx.Repo.IsTag = true | |||
// ctx.Repo.BranchName = refName | |||
// ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommitOfTag(refName) | |||
// if err != nil { | |||
// ctx.Handle(500, "Fail to get tag commit", err) | |||
// return | |||
// } | |||
// ctx.Repo.CommitId = ctx.Repo.Commit.Id.String() | |||
// } else if len(refName) == 40 { | |||
// ctx.Repo.IsCommit = true | |||
// ctx.Repo.CommitId = refName | |||
// ctx.Repo.BranchName = refName | |||
// ctx.Repo.Commit, err = gitRepo.GetCommit(refName) | |||
// if err != nil { | |||
// ctx.Handle(404, "RepoAssignment invalid commit", nil) | |||
// return | |||
// } | |||
// } else { | |||
// ctx.Handle(404, "RepoAssignment invalid repo", fmt.Errorf("branch or tag not exist: %s", refName)) | |||
// return | |||
// } | |||
// } else { | |||
// if len(refName) == 0 { | |||
// if gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) { | |||
// refName = ctx.Repo.Repository.DefaultBranch | |||
// } else { | |||
// brs, err := gitRepo.GetBranches() | |||
// if err != nil { | |||
// ctx.Handle(500, "GetBranches", err) | |||
// return | |||
// } | |||
// refName = brs[0] | |||
// } | |||
// } | |||
// goto detect | |||
// } | |||
// ctx.Data["IsBranch"] = ctx.Repo.IsBranch | |||
// ctx.Data["IsTag"] = ctx.Repo.IsTag | |||
// ctx.Data["IsCommit"] = ctx.Repo.IsCommit | |||
// ctx.Repo.CommitsCount, err = ctx.Repo.Commit.CommitsCount() | |||
// if err != nil { | |||
// ctx.Handle(500, "CommitsCount", err) | |||
// return | |||
// } | |||
// ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount | |||
// } | |||
// repo is bare and display enable | |||
if ctx.Repo.Repository.IsBare { |
@@ -240,6 +240,9 @@ img.avatar-100 { | |||
.text-black { | |||
color: #444444; | |||
} | |||
.text-gold { | |||
color: #a1882b; | |||
} | |||
.table { | |||
width: 100%; | |||
max-width: 100%; |
@@ -259,6 +259,9 @@ clear: both; | |||
.text-black { | |||
color: #444444; | |||
} | |||
.text-gold { | |||
color: #a1882b; | |||
} | |||
.table { | |||
width: 100%; | |||
max-width: 100%; |
@@ -20,6 +20,17 @@ const ( | |||
DIFF base.TplName = "repo/diff" | |||
) | |||
func RefCommits(ctx *middleware.Context) { | |||
switch { | |||
case len(ctx.Repo.TreeName) == 0: | |||
Commits(ctx) | |||
case ctx.Repo.TreeName == "search": | |||
SearchCommits(ctx) | |||
default: | |||
FileHistory(ctx) | |||
} | |||
} | |||
func Commits(ctx *middleware.Context) { | |||
ctx.Data["IsRepoToolbarCommits"] = true | |||
@@ -109,6 +120,69 @@ func SearchCommits(ctx *middleware.Context) { | |||
ctx.HTML(200, COMMITS) | |||
} | |||
func FileHistory(ctx *middleware.Context) { | |||
ctx.Data["IsRepoToolbarCommits"] = true | |||
fileName := ctx.Repo.TreeName | |||
if len(fileName) == 0 { | |||
Commits(ctx) | |||
return | |||
} | |||
userName := ctx.Repo.Owner.Name | |||
repoName := ctx.Repo.Repository.Name | |||
branchName := ctx.Repo.BranchName | |||
brs, err := ctx.Repo.GitRepo.GetBranches() | |||
if err != nil { | |||
ctx.Handle(500, "GetBranches", err) | |||
return | |||
} else if len(brs) == 0 { | |||
ctx.Handle(404, "GetBranches", nil) | |||
return | |||
} | |||
commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(branchName, fileName) | |||
if err != nil { | |||
ctx.Handle(500, "repo.FileHistory(GetCommitsCount)", err) | |||
return | |||
} else if commitsCount == 0 { | |||
ctx.Handle(404, "repo.FileHistory", nil) | |||
return | |||
} | |||
// Calculate and validate page number. | |||
page := com.StrTo(ctx.Query("p")).MustInt() | |||
if page < 1 { | |||
page = 1 | |||
} | |||
lastPage := page - 1 | |||
if lastPage < 0 { | |||
lastPage = 0 | |||
} | |||
nextPage := page + 1 | |||
if nextPage*50 > commitsCount { | |||
nextPage = 0 | |||
} | |||
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 | |||
ctx.Data["CommitCount"] = commitsCount | |||
ctx.Data["LastPageNum"] = lastPage | |||
ctx.Data["NextPageNum"] = nextPage | |||
ctx.HTML(200, COMMITS) | |||
} | |||
func Diff(ctx *middleware.Context) { | |||
ctx.Data["IsRepoToolbarCommits"] = true | |||
@@ -230,66 +304,3 @@ func CompareDiff(ctx *middleware.Context) { | |||
ctx.Data["RawPath"] = "/" + path.Join(userName, repoName, "raw", afterCommitId) | |||
ctx.HTML(200, DIFF) | |||
} | |||
func FileHistory(ctx *middleware.Context) { | |||
ctx.Data["IsRepoToolbarCommits"] = true | |||
fileName := ctx.Params("*") | |||
if len(fileName) == 0 { | |||
Commits(ctx) | |||
return | |||
} | |||
userName := ctx.Repo.Owner.Name | |||
repoName := ctx.Repo.Repository.Name | |||
branchName := ctx.Params(":branchname") | |||
brs, err := ctx.Repo.GitRepo.GetBranches() | |||
if err != nil { | |||
ctx.Handle(500, "GetBranches", err) | |||
return | |||
} else if len(brs) == 0 { | |||
ctx.Handle(404, "GetBranches", nil) | |||
return | |||
} | |||
commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(branchName, fileName) | |||
if err != nil { | |||
ctx.Handle(500, "repo.FileHistory(GetCommitsCount)", err) | |||
return | |||
} else if commitsCount == 0 { | |||
ctx.Handle(404, "repo.FileHistory", nil) | |||
return | |||
} | |||
// Calculate and validate page number. | |||
page := com.StrTo(ctx.Query("p")).MustInt() | |||
if page < 1 { | |||
page = 1 | |||
} | |||
lastPage := page - 1 | |||
if lastPage < 0 { | |||
lastPage = 0 | |||
} | |||
nextPage := page + 1 | |||
if nextPage*50 > commitsCount { | |||
nextPage = 0 | |||
} | |||
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 | |||
ctx.Data["CommitCount"] = commitsCount | |||
ctx.Data["LastPageNum"] = lastPage | |||
ctx.Data["NextPageNum"] = nextPage | |||
ctx.HTML(200, COMMITS) | |||
} |
@@ -13,9 +13,7 @@ import ( | |||
) | |||
func SingleDownload(ctx *middleware.Context) { | |||
treename := ctx.Params("*") | |||
blob, err := ctx.Repo.Commit.GetBlobByPath(treename) | |||
blob, err := ctx.Repo.Commit.GetBlobByPath(ctx.Repo.TreeName) | |||
if err != nil { | |||
ctx.Handle(500, "GetBlobByPath", err) | |||
return | |||
@@ -23,7 +21,7 @@ func SingleDownload(ctx *middleware.Context) { | |||
dataRc, err := blob.Data() | |||
if err != nil { | |||
ctx.Handle(500, "repo.SingleDownload(Data)", err) | |||
ctx.Handle(500, "Data", err) | |||
return | |||
} | |||
@@ -37,7 +35,7 @@ func SingleDownload(ctx *middleware.Context) { | |||
_, isImageFile := base.IsImageFile(buf) | |||
ctx.Resp.Header().Set("Content-Type", contentType) | |||
if !isTextFile && !isImageFile { | |||
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(treename)) | |||
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(ctx.Repo.TreeName)) | |||
ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary") | |||
} | |||
ctx.Resp.Write(buf) |
@@ -22,21 +22,38 @@ func Releases(ctx *middleware.Context) { | |||
ctx.Data["Title"] = "Releases" | |||
ctx.Data["IsRepoToolbarReleases"] = true | |||
ctx.Data["IsRepoReleaseNew"] = false | |||
rawTags, err := ctx.Repo.GitRepo.GetTags() | |||
if err != nil { | |||
ctx.Handle(500, "release.Releases(GetTags)", err) | |||
ctx.Handle(500, "GetTags", err) | |||
return | |||
} | |||
rels, err := models.GetReleasesByRepoId(ctx.Repo.Repository.Id) | |||
if err != nil { | |||
ctx.Handle(500, "release.Releases(GetReleasesByRepoId)", err) | |||
ctx.Handle(500, "GetReleasesByRepoId", err) | |||
return | |||
} | |||
// Get default branch. | |||
refName := ctx.Repo.Repository.DefaultBranch | |||
if !ctx.Repo.GitRepo.IsBranchExist(refName) { | |||
brs, err := ctx.Repo.GitRepo.GetBranches() | |||
if err != nil { | |||
ctx.Handle(500, "GetBranches", err) | |||
return | |||
} | |||
refName = brs[0] | |||
} | |||
commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(refName) | |||
if err != nil { | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
commitsCount, err := ctx.Repo.Commit.CommitsCount() | |||
commitsCount, err := commit.CommitsCount() | |||
if err != nil { | |||
ctx.Handle(500, "release.Releases(CommitsCount)", err) | |||
ctx.Handle(500, "CommitsCount", err) | |||
return | |||
} | |||
@@ -59,18 +76,18 @@ func Releases(ctx *middleware.Context) { | |||
if ctx.Repo.BranchName != rel.Target { | |||
// Get count if not exists. | |||
if _, ok := countCache[rel.Target]; !ok { | |||
commit, err := ctx.Repo.GitRepo.GetCommitOfTag(rel.TagName) | |||
commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(ctx.Repo.BranchName) | |||
if err != nil { | |||
ctx.Handle(500, "GetCommitOfTag", err) | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
countCache[rel.Target], err = commit.CommitsCount() | |||
countCache[ctx.Repo.BranchName], err = commit.CommitsCount() | |||
if err != nil { | |||
ctx.Handle(500, "CommitsCount2", err) | |||
return | |||
} | |||
} | |||
rel.NumCommitsBehind = countCache[rel.Target] - rel.NumCommits | |||
rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits | |||
} else { | |||
rel.NumCommitsBehind = commitsCount - rel.NumCommits | |||
} | |||
@@ -134,14 +151,20 @@ func NewReleasePost(ctx *middleware.Context, form auth.NewReleaseForm) { | |||
return | |||
} | |||
commitsCount, err := ctx.Repo.Commit.CommitsCount() | |||
if !ctx.Repo.GitRepo.IsBranchExist(form.Target) { | |||
ctx.RenderWithErr(ctx.Tr("form.target_branch_not_exist"), RELEASE_NEW, &form) | |||
return | |||
} | |||
commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(form.Target) | |||
if err != nil { | |||
ctx.Handle(500, "release.ReleasesNewPost(CommitsCount)", err) | |||
ctx.Handle(500, "GetCommitOfBranch", err) | |||
return | |||
} | |||
if !ctx.Repo.GitRepo.IsBranchExist(form.Target) { | |||
ctx.RenderWithErr("Target branch does not exist", "release/new", &form) | |||
commitsCount, err := commit.CommitsCount() | |||
if err != nil { | |||
ctx.Handle(500, "CommitsCount", err) | |||
return | |||
} | |||
@@ -151,7 +174,7 @@ func NewReleasePost(ctx *middleware.Context, form auth.NewReleaseForm) { | |||
Title: form.Title, | |||
TagName: form.TagName, | |||
Target: form.Target, | |||
Sha1: ctx.Repo.Commit.Id.String(), | |||
Sha1: commit.Id.String(), | |||
NumCommits: commitsCount, | |||
Note: form.Content, | |||
IsDraft: len(form.Draft) > 0, |
@@ -34,7 +34,7 @@ func Home(ctx *middleware.Context) { | |||
rawLink := ctx.Repo.RepoLink + "/raw/" + branchName | |||
// Get tree path | |||
treename := ctx.Params("*") | |||
treename := ctx.Repo.TreeName | |||
if len(treename) > 0 && treename[len(treename)-1] == '/' { | |||
ctx.Redirect(repoLink + "/src/" + branchName + "/" + treename[:len(treename)-1]) |
@@ -1 +1 @@ | |||
0.5.7.1105 Beta | |||
0.5.7.1106 Beta |
@@ -54,7 +54,7 @@ | |||
{{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> | |||
@@ -63,7 +63,7 @@ | |||
<a href="#"> | |||
<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" .}} |
@@ -70,13 +70,18 @@ | |||
<div class="tab-pane active"> | |||
<div id="org-repo-list"> | |||
{{range .Repos}} | |||
{{if not .IsPrivate}} | |||
{{if or (not .IsPrivate) (.HasAccess $.SignedUserName)}} | |||
<div class="org-repo-item"> | |||
<ul class="org-repo-status right"> | |||
<li><i class="octicon octicon-star"></i> {{.NumStars}}</li> | |||
<li><i class="octicon octicon-git-branch"></i> {{.NumForks}}</li> | |||
</ul> | |||
<h2><a href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{.Name}}</a></h2> | |||
<h2> | |||
<a href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{.Name}}</a> | |||
{{if .IsPrivate}} | |||
<span class="text-gold"><i class="octicon octicon-lock"></i></span> | |||
{{end}} | |||
</h2> | |||
<p class="org-repo-description">{{.Description}}</p> | |||
<p class="org-repo-updated">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p> | |||
</div> |