diff options
author | Unknown <joe2010xtmf@163.com> | 2014-03-17 00:57:18 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-03-17 00:57:18 -0400 |
commit | 0f68930892bc49966769f8931e9a531b37dacb3b (patch) | |
tree | 2e125d90f57b3119229a62224cab807f3a79025a /models | |
parent | 664bbe4f54248b1c5e7110dc88b8d24209566a11 (diff) | |
download | gitea-0f68930892bc49966769f8931e9a531b37dacb3b.tar.gz gitea-0f68930892bc49966769f8931e9a531b37dacb3b.zip |
Add latest commit in repo viewer
Diffstat (limited to 'models')
-rw-r--r-- | models/repo2.go | 41 |
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 +} |