| @@ -20,7 +20,7 @@ import ( | |||||
| // Test that go1.1 tag above is included in builds. main.go refers to this definition. | // Test that go1.1 tag above is included in builds. main.go refers to this definition. | ||||
| const go11tag = true | const go11tag = true | ||||
| const APP_VER = "0.1.0.0317.1" | |||||
| const APP_VER = "0.1.0.0318.1" | |||||
| func init() { | func init() { | ||||
| base.AppVer = APP_VER | base.AppVer = APP_VER | ||||
| @@ -400,15 +400,6 @@ func DeleteRepository(userId, repoId int64, userName string) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // Commit represents a git commit. | |||||
| type Commit struct { | |||||
| Author string | |||||
| Email string | |||||
| Date time.Time | |||||
| SHA string | |||||
| Message string | |||||
| } | |||||
| var ( | var ( | ||||
| ErrRepoFileNotLoaded = fmt.Errorf("repo file not loaded") | 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. | // 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 { | if err != nil { | ||||
| return nil, err | 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. | // GetCommits returns all commits of given branch of repository. | ||||
| @@ -90,13 +90,13 @@ func Single(ctx *middleware.Context, params martini.Params) { | |||||
| } | } | ||||
| // Get latest commit according username and repo name | // 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 { | if err != nil { | ||||
| log.Error("repo.Single(GetLastestCommit): %v", err) | log.Error("repo.Single(GetLastestCommit): %v", err) | ||||
| ctx.Render.Error(404) | ctx.Render.Error(404) | ||||
| return | return | ||||
| } | } | ||||
| ctx.Data["LatestCommit"] = commit | |||||
| ctx.Data["LastCommit"] = commit | |||||
| var readmeFile *models.RepoFile | var readmeFile *models.RepoFile | ||||
| @@ -42,10 +42,10 @@ | |||||
| <div class="panel panel-default info-box"> | <div class="panel panel-default info-box"> | ||||
| <div class="panel-heading info-head"> | <div class="panel-heading info-head"> | ||||
| <a href="/{{$username}}/{{$reponame}}/commit/{{.LatestCommit.SHA}}">{{.LatestCommit.Message}}</a> | |||||
| <a href="/{{$username}}/{{$reponame}}/commit/{{.LastCommit.Oid.String}}">{{.LastCommit.Message}}</a> | |||||
| </div> | </div> | ||||
| <div class="panel-body info-content"> | <div class="panel-body info-content"> | ||||
| <a href="/user/{{.LatestCommit.Author}}">{{.LatestCommit.Author}}</a> <span class="text-muted">{{TimeSince .LatestCommit.Date}}</span> | |||||
| <a href="/user/{{.LastCommit.Author.Name}}">{{.LastCommit.Author.Name}}</a> <span class="text-muted">{{TimeSince .LastCommit.Author.When}}</span> | |||||
| </div> | </div> | ||||
| <table class="panel-footer table file-list"> | <table class="panel-footer table file-list"> | ||||
| <thead class="hidden"> | <thead class="hidden"> | ||||