summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-17 00:57:18 -0400
committerUnknown <joe2010xtmf@163.com>2014-03-17 00:57:18 -0400
commit0f68930892bc49966769f8931e9a531b37dacb3b (patch)
tree2e125d90f57b3119229a62224cab807f3a79025a /models
parent664bbe4f54248b1c5e7110dc88b8d24209566a11 (diff)
downloadgitea-0f68930892bc49966769f8931e9a531b37dacb3b.tar.gz
gitea-0f68930892bc49966769f8931e9a531b37dacb3b.zip
Add latest commit in repo viewer
Diffstat (limited to 'models')
-rw-r--r--models/repo2.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/models/repo2.go b/models/repo2.go
index a8dbc44db9..0c17a58335 100644
--- a/models/repo2.go
+++ b/models/repo2.go
@@ -6,11 +6,22 @@ package models
import (
"path"
+ "strings"
"time"
+ "github.com/Unknwon/com"
+
"github.com/gogits/git"
)
+type Commit struct {
+ Author string
+ Email string
+ Date time.Time
+ SHA string
+ Message string
+}
+
type RepoFile struct {
*git.TreeEntry
Path string
@@ -85,3 +96,33 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile,
return append(repodirs, repofiles...), nil
}
+
+func GetLastestCommit(userName, repoName string) (*Commit, error) {
+ stdout, _, err := com.ExecCmd("git", "--git-dir="+RepoPath(userName, repoName), "log", "-1")
+ if err != nil {
+ return nil, err
+ }
+
+ commit := new(Commit)
+ for _, line := range strings.Split(stdout, "\n") {
+ if len(line) == 0 {
+ continue
+ }
+ switch {
+ case line[0] == 'c':
+ commit.SHA = line[7:]
+ case line[0] == 'A':
+ infos := strings.SplitN(line, " ", 3)
+ commit.Author = infos[1]
+ commit.Email = infos[2][1 : len(infos[2])-1]
+ case line[0] == 'D':
+ commit.Date, err = time.Parse("Mon Jan 02 15:04:05 2006 -0700", line[8:])
+ if err != nil {
+ return nil, err
+ }
+ case line[:4] == " ":
+ commit.Message = line[4:]
+ }
+ }
+ return commit, nil
+}