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"
"fmt"
"path"
2014-03-24 14:25:15 +04:00
"github.com/codegangsta/martini"
2014-03-27 20:07:22 +04:00
2014-03-24 14:25:15 +04:00
"github.com/gogits/gogs/models"
"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-27 20:07:22 +04:00
fmt . Println ( params [ "branchname" ] )
2014-03-26 07:53:01 +04:00
commit , err := models . GetCommit ( params [ "username" ] , params [ "reponame" ] , params [ "branchname" ] , params [ "commitid" ] )
if err != nil {
ctx . Handle ( 404 , "repo.Diff" , err )
return
}
diff , err := models . GetDiff ( models . RepoPath ( params [ "username" ] , params [ "reponame" ] ) , params [ "commitid" ] )
if err != nil {
ctx . Handle ( 404 , "repo.Diff" , err )
return
}
2014-03-27 20:07:22 +04:00
shortSha := params [ "commitid" ] [ : 10 ]
2014-03-26 07:53:01 +04:00
ctx . Data [ "Title" ] = commit . Message ( ) + " · " + shortSha
ctx . Data [ "Commit" ] = commit
ctx . Data [ "ShortSha" ] = shortSha
ctx . Data [ "Diff" ] = diff
2014-03-24 17:27:19 +04:00
ctx . Data [ "IsRepoToolbarCommits" ] = true
2014-03-27 20:07:22 +04:00
ctx . Data [ "SourcePath" ] = "/" + path . Join ( params [ "username" ] , params [ "reponame" ] , "src" , params [ "commitid" ] )
2014-03-26 07:53:01 +04:00
ctx . HTML ( 200 , "repo/diff" )
2014-03-24 17:27:19 +04:00
}