diff --git a/gogs.go b/gogs.go index 433b9af094..2757fbc115 100644 --- a/gogs.go +++ b/gogs.go @@ -20,7 +20,7 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.1.0.0317.1" +const APP_VER = "0.1.0.0318.1" func init() { base.AppVer = APP_VER diff --git a/models/repo.go b/models/repo.go index 6e3754acf5..21d46aa250 100644 --- a/models/repo.go +++ b/models/repo.go @@ -400,15 +400,6 @@ func DeleteRepository(userId, repoId int64, userName string) (err error) { return nil } -// Commit represents a git commit. -type Commit struct { - Author string - Email string - Date time.Time - SHA string - Message string -} - var ( ErrRepoFileNotLoaded = fmt.Errorf("repo file not loaded") ) @@ -553,34 +544,16 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, } // GetLastestCommit returns the latest commit of given repository. -func GetLastestCommit(userName, repoName string) (*Commit, error) { - stdout, _, err := com.ExecCmd("git", "--git-dir="+RepoPath(userName, repoName), "log", "-1") +func GetLastCommit(userName, repoName, branchname string) (*git.Commit, error) { + repo, err := git.OpenRepository(RepoPath(userName, repoName)) 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:] - } + r, err := repo.LookupReference(fmt.Sprintf("refs/heads/%s", branchname)) + if err != nil { + return nil, err } - return commit, nil + return r.LastCommit() } // GetCommits returns all commits of given branch of repository. diff --git a/routers/repo/single.go b/routers/repo/single.go index 1b5da9d307..64ea508b0e 100644 --- a/routers/repo/single.go +++ b/routers/repo/single.go @@ -90,13 +90,13 @@ func Single(ctx *middleware.Context, params martini.Params) { } // Get latest commit according username and repo name - commit, err := models.GetLastestCommit(params["username"], params["reponame"]) + commit, err := models.GetLastCommit(params["username"], params["reponame"], params["branchname"]) if err != nil { log.Error("repo.Single(GetLastestCommit): %v", err) ctx.Render.Error(404) return } - ctx.Data["LatestCommit"] = commit + ctx.Data["LastCommit"] = commit var readmeFile *models.RepoFile diff --git a/templates/repo/single.tmpl b/templates/repo/single.tmpl index 019ec8eaaa..3831c2dc41 100644 --- a/templates/repo/single.tmpl +++ b/templates/repo/single.tmpl @@ -42,10 +42,10 @@
- {{.LatestCommit.Message}} + {{.LastCommit.Message}}
- {{.LatestCommit.Author}} {{TimeSince .LatestCommit.Date}} + {{.LastCommit.Author.Name}} {{TimeSince .LastCommit.Author.When}}