2014-03-24 14:25:15 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package repo
import (
2014-03-27 20:07:22 +04:00
"container/list"
"path"
2014-03-30 20:11:28 +04:00
"github.com/go-martini/martini"
2014-03-27 20:07:22 +04:00
2014-03-24 14:25:15 +04:00
"github.com/gogits/gogs/models"
2014-03-27 21:17:09 +04:00
"github.com/gogits/gogs/modules/base"
2014-03-24 14:25:15 +04:00
"github.com/gogits/gogs/modules/middleware"
)
func Commits ( ctx * middleware . Context , params martini . Params ) {
2014-03-27 20:07:22 +04:00
userName := params [ "username" ]
repoName := params [ "reponame" ]
branchName := params [ "branchname" ]
brs , err := models . GetBranches ( userName , repoName )
2014-03-24 14:25:15 +04:00
if err != nil {
ctx . Handle ( 200 , "repo.Commits" , err )
return
} else if len ( brs ) == 0 {
ctx . Handle ( 404 , "repo.Commits" , nil )
return
}
2014-03-27 20:07:22 +04:00
var commits * list . List
if models . IsBranchExist ( userName , repoName , branchName ) {
commits , err = models . GetCommitsByBranch ( userName , repoName , branchName )
} else {
commits , err = models . GetCommitsByCommitId ( userName , repoName , branchName )
}
2014-03-24 14:25:15 +04:00
if err != nil {
2014-03-27 20:13:05 +04:00
ctx . Handle ( 404 , "repo.Commits" , err )
2014-03-24 14:25:15 +04:00
return
}
2014-03-27 20:07:22 +04:00
ctx . Data [ "Username" ] = userName
ctx . Data [ "Reponame" ] = repoName
2014-03-24 14:25:15 +04:00
ctx . Data [ "CommitCount" ] = commits . Len ( )
ctx . Data [ "Commits" ] = commits
2014-03-27 20:07:22 +04:00
ctx . Data [ "IsRepoToolbarCommits" ] = true
2014-03-24 14:25:15 +04:00
ctx . HTML ( 200 , "repo/commits" )
}
2014-03-24 17:27:19 +04:00
2014-03-26 07:53:01 +04:00
func Diff ( ctx * middleware . Context , params martini . Params ) {
2014-03-30 06:13:02 +04:00
userName := ctx . Repo . Owner . Name
repoName := ctx . Repo . Repository . Name
branchName := ctx . Repo . BranchName
commitId := ctx . Repo . CommitId
2014-03-27 21:17:09 +04:00
2014-03-30 06:13:02 +04:00
commit := ctx . Repo . Commit
2014-03-26 07:53:01 +04:00
2014-03-27 21:17:09 +04:00
diff , err := models . GetDiff ( models . RepoPath ( userName , repoName ) , commitId )
2014-03-26 07:53:01 +04:00
if err != nil {
ctx . Handle ( 404 , "repo.Diff" , err )
return
}
2014-03-27 21:17:09 +04:00
isImageFile := func ( name string ) bool {
repoFile , err := models . GetTargetFile ( userName , repoName ,
branchName , commitId , name )
if err != nil {
return false
}
blob , err := repoFile . LookupBlob ( )
if err != nil {
return false
}
data := blob . Contents ( )
_ , isImage := base . IsImageFile ( data )
return isImage
}
ctx . Data [ "IsImageFile" ] = isImageFile
2014-03-30 06:13:02 +04:00
ctx . Data [ "Title" ] = commit . Message ( ) + " · " + base . ShortSha ( commitId )
2014-03-26 07:53:01 +04:00
ctx . Data [ "Commit" ] = commit
ctx . Data [ "Diff" ] = diff
2014-03-24 17:27:19 +04:00
ctx . Data [ "IsRepoToolbarCommits" ] = true
2014-03-27 21:17:09 +04:00
ctx . Data [ "SourcePath" ] = "/" + path . Join ( userName , repoName , "src" , commitId )
ctx . Data [ "RawPath" ] = "/" + path . Join ( userName , repoName , "raw" , commitId )
2014-03-26 07:53:01 +04:00
ctx . HTML ( 200 , "repo/diff" )
2014-03-24 17:27:19 +04:00
}