aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/commit.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/commit.go')
-rw-r--r--routers/repo/commit.go439
1 files changed, 218 insertions, 221 deletions
diff --git a/routers/repo/commit.go b/routers/repo/commit.go
index 71b48382..6320123b 100644
--- a/routers/repo/commit.go
+++ b/routers/repo/commit.go
@@ -4,224 +4,221 @@
package repo
-// import (
-// "path"
-
-// "github.com/Unknwon/com"
-// "github.com/go-martini/martini"
-
-// "github.com/gogits/gogs/models"
-// "github.com/gogits/gogs/modules/base"
-// "github.com/gogits/gogs/modules/middleware"
-// )
-
-// const (
-// COMMITS base.TplName = "repo/commits"
-// DIFF base.TplName = "repo/diff"
-// )
-
-// func Commits(ctx *middleware.Context, params martini.Params) {
-// ctx.Data["IsRepoToolbarCommits"] = true
-
-// userName := ctx.Repo.Owner.Name
-// repoName := ctx.Repo.Repository.Name
-
-// brs, err := ctx.Repo.GitRepo.GetBranches()
-// if err != nil {
-// ctx.Handle(500, "repo.Commits(GetBranches)", err)
-// return
-// } else if len(brs) == 0 {
-// ctx.Handle(404, "repo.Commits(GetBranches)", nil)
-// return
-// }
-
-// commitsCount, err := ctx.Repo.Commit.CommitsCount()
-// if err != nil {
-// ctx.Handle(500, "repo.Commits(GetCommitsCount)", err)
-// return
-// }
-
-// // Calculate and validate page number.
-// page, _ := com.StrTo(ctx.Query("p")).Int()
-// if page < 1 {
-// page = 1
-// }
-// lastPage := page - 1
-// if lastPage < 0 {
-// lastPage = 0
-// }
-// nextPage := page + 1
-// if nextPage*50 > commitsCount {
-// nextPage = 0
-// }
-
-// // Both `git log branchName` and `git log commitId` work.
-// // ctx.Data["Commits"], err = ctx.Repo.Commit.CommitsByRange(page)
-// // if err != nil {
-// // ctx.Handle(500, "repo.Commits(CommitsByRange)", err)
-// // return
-// // }
-
-// ctx.Data["Username"] = userName
-// ctx.Data["Reponame"] = repoName
-// ctx.Data["CommitCount"] = commitsCount
-// ctx.Data["LastPageNum"] = lastPage
-// ctx.Data["NextPageNum"] = nextPage
-// ctx.HTML(200, COMMITS)
-// }
-
-// func SearchCommits(ctx *middleware.Context, params martini.Params) {
-// ctx.Data["IsSearchPage"] = true
-// ctx.Data["IsRepoToolbarCommits"] = true
-
-// keyword := ctx.Query("q")
-// if len(keyword) == 0 {
-// ctx.Redirect(ctx.Repo.RepoLink + "/commits/" + ctx.Repo.BranchName)
-// return
-// }
-
-// userName := params["username"]
-// repoName := params["reponame"]
-
-// brs, err := ctx.Repo.GitRepo.GetBranches()
-// if err != nil {
-// ctx.Handle(500, "repo.SearchCommits(GetBranches)", err)
-// return
-// } else if len(brs) == 0 {
-// ctx.Handle(404, "repo.SearchCommits(GetBranches)", nil)
-// return
-// }
-
-// // commits, err := ctx.Repo.Commit.SearchCommits(keyword)
-// // if err != nil {
-// // ctx.Handle(500, "repo.SearchCommits(SearchCommits)", err)
-// // return
-// // }
-
-// ctx.Data["Keyword"] = keyword
-// ctx.Data["Username"] = userName
-// ctx.Data["Reponame"] = repoName
-// // ctx.Data["CommitCount"] = commits.Len()
-// // ctx.Data["Commits"] = commits
-// ctx.HTML(200, COMMITS)
-// }
-
-// func Diff(ctx *middleware.Context, params martini.Params) {
-// ctx.Data["IsRepoToolbarCommits"] = true
-
-// userName := ctx.Repo.Owner.Name
-// repoName := ctx.Repo.Repository.Name
-// commitId := ctx.Repo.CommitId
-
-// commit := ctx.Repo.Commit
-
-// diff, err := models.GetDiff(models.RepoPath(userName, repoName), commitId)
-// if err != nil {
-// ctx.Handle(404, "repo.Diff(GetDiff)", err)
-// return
-// }
-
-// isImageFile := func(name string) bool {
-// // blob, err := ctx.Repo.Commit.GetBlobByPath(name)
-// // if err != nil {
-// // return false
-// // }
-
-// // dataRc, err := blob.Data()
-// // if err != nil {
-// // return false
-// // }
-// // buf := make([]byte, 1024)
-// // n, _ := dataRc.Read(buf)
-// // if n > 0 {
-// // buf = buf[:n]
-// // }
-// // dataRc.Close()
-// // _, isImage := base.IsImageFile(buf)
-// // return isImage
-// return false
-// }
-
-// parents := make([]string, commit.ParentCount())
-// for i := 0; i < commit.ParentCount(); i++ {
-// sha, err := commit.ParentId(i)
-// parents[i] = sha.String()
-// if err != nil {
-// ctx.Handle(404, "repo.Diff", err)
-// return
-// }
-// }
-
-// ctx.Data["Username"] = userName
-// ctx.Data["Reponame"] = repoName
-// ctx.Data["IsImageFile"] = isImageFile
-// ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitId)
-// ctx.Data["Commit"] = commit
-// ctx.Data["Diff"] = diff
-// ctx.Data["Parents"] = parents
-// ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
-// ctx.Data["SourcePath"] = "/" + path.Join(userName, repoName, "src", commitId)
-// ctx.Data["RawPath"] = "/" + path.Join(userName, repoName, "raw", commitId)
-// ctx.HTML(200, DIFF)
-// }
-
-// func FileHistory(ctx *middleware.Context, params martini.Params) {
-// ctx.Data["IsRepoToolbarCommits"] = true
-
-// fileName := params["_1"]
-// if len(fileName) == 0 {
-// Commits(ctx, params)
-// return
-// }
-
-// userName := ctx.Repo.Owner.Name
-// repoName := ctx.Repo.Repository.Name
-// branchName := params["branchname"]
-
-// brs, err := ctx.Repo.GitRepo.GetBranches()
-// if err != nil {
-// ctx.Handle(500, "repo.FileHistory", err)
-// return
-// } else if len(brs) == 0 {
-// ctx.Handle(404, "repo.FileHistory", 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, _ := base.StrTo(ctx.Query("p")).Int()
-// // if page < 1 {
-// // page = 1
-// // }
-// // lastPage := page - 1
-// // if lastPage < 0 {
-// // lastPage = 0
-// // }
-// // nextPage := page + 1
-// // if nextPage*50 > commitsCount {
-// // nextPage = 0
-// // }
-
-// // ctx.Data["Commits"], err = ctx.Repo.GitRepo.CommitsByFileAndRange(
-// // branchName, fileName, page)
-// // if err != nil {
-// // ctx.Handle(500, "repo.FileHistory(CommitsByRange)", err)
-// // return
-// // }
-
-// 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)
-// }
+import (
+ "path"
+
+ "github.com/Unknwon/com"
+
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/middleware"
+)
+
+const (
+ COMMITS base.TplName = "repo/commits"
+ DIFF base.TplName = "repo/diff"
+)
+
+func Commits(ctx *middleware.Context) {
+ ctx.Data["IsRepoToolbarCommits"] = true
+
+ userName := ctx.Repo.Owner.Name
+ repoName := ctx.Repo.Repository.Name
+
+ 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.Commit.CommitsCount()
+ if err != nil {
+ ctx.Handle(500, "GetCommitsCount", err)
+ return
+ }
+
+ // Calculate and validate page number.
+ page, _ := com.StrTo(ctx.Query("p")).Int()
+ if page < 1 {
+ page = 1
+ }
+ lastPage := page - 1
+ if lastPage < 0 {
+ lastPage = 0
+ }
+ nextPage := page + 1
+ if nextPage*50 > commitsCount {
+ nextPage = 0
+ }
+
+ // Both `git log branchName` and `git log commitId` work.
+ ctx.Data["Commits"], err = ctx.Repo.Commit.CommitsByRange(page)
+ if err != nil {
+ ctx.Handle(500, "CommitsByRange", err)
+ return
+ }
+
+ ctx.Data["Username"] = userName
+ ctx.Data["Reponame"] = repoName
+ ctx.Data["CommitCount"] = commitsCount
+ ctx.Data["LastPageNum"] = lastPage
+ ctx.Data["NextPageNum"] = nextPage
+ ctx.HTML(200, COMMITS)
+}
+
+func SearchCommits(ctx *middleware.Context) {
+ ctx.Data["IsSearchPage"] = true
+ ctx.Data["IsRepoToolbarCommits"] = true
+
+ keyword := ctx.Query("q")
+ if len(keyword) == 0 {
+ ctx.Redirect(ctx.Repo.RepoLink + "/commits/" + ctx.Repo.BranchName)
+ return
+ }
+
+ userName := ctx.Params(":username")
+ repoName := ctx.Params(":reponame")
+
+ 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
+ }
+
+ commits, err := ctx.Repo.Commit.SearchCommits(keyword)
+ if err != nil {
+ ctx.Handle(500, "repo.SearchCommits(SearchCommits)", err)
+ return
+ }
+
+ ctx.Data["Keyword"] = keyword
+ ctx.Data["Username"] = userName
+ ctx.Data["Reponame"] = repoName
+ ctx.Data["CommitCount"] = commits.Len()
+ ctx.Data["Commits"] = commits
+ ctx.HTML(200, COMMITS)
+}
+
+func Diff(ctx *middleware.Context) {
+ ctx.Data["IsRepoToolbarCommits"] = true
+
+ userName := ctx.Repo.Owner.Name
+ repoName := ctx.Repo.Repository.Name
+ commitId := ctx.Repo.CommitId
+
+ commit := ctx.Repo.Commit
+
+ diff, err := models.GetDiff(models.RepoPath(userName, repoName), commitId)
+ if err != nil {
+ ctx.Handle(404, "GetDiff", err)
+ return
+ }
+
+ isImageFile := func(name string) bool {
+ blob, err := ctx.Repo.Commit.GetBlobByPath(name)
+ if err != nil {
+ return false
+ }
+
+ dataRc, err := blob.Data()
+ if err != nil {
+ return false
+ }
+ buf := make([]byte, 1024)
+ n, _ := dataRc.Read(buf)
+ if n > 0 {
+ buf = buf[:n]
+ }
+ _, isImage := base.IsImageFile(buf)
+ return isImage
+ }
+
+ parents := make([]string, commit.ParentCount())
+ for i := 0; i < commit.ParentCount(); i++ {
+ sha, err := commit.ParentId(i)
+ parents[i] = sha.String()
+ if err != nil {
+ ctx.Handle(404, "repo.Diff", err)
+ return
+ }
+ }
+
+ ctx.Data["Username"] = userName
+ ctx.Data["Reponame"] = repoName
+ ctx.Data["IsImageFile"] = isImageFile
+ ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitId)
+ ctx.Data["Commit"] = commit
+ ctx.Data["Diff"] = diff
+ ctx.Data["Parents"] = parents
+ ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
+ ctx.Data["SourcePath"] = "/" + path.Join(userName, repoName, "src", commitId)
+ ctx.Data["RawPath"] = "/" + path.Join(userName, repoName, "raw", commitId)
+ 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
+ }
+
+ ctx.Data["Commits"], err = ctx.Repo.GitRepo.CommitsByFileAndRange(
+ branchName, fileName, page)
+ if err != nil {
+ ctx.Handle(500, "repo.FileHistory(CommitsByRange)", err)
+ return
+ }
+
+ 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)
+}