diff options
Diffstat (limited to 'modules/git')
-rw-r--r-- | modules/git/commit.go | 8 | ||||
-rw-r--r-- | modules/git/repo_commit.go | 18 |
2 files changed, 22 insertions, 4 deletions
diff --git a/modules/git/commit.go b/modules/git/commit.go index 5e492e27ea..8c7732a26b 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -466,15 +466,15 @@ func (c *Commit) GetSubModule(entryname string) (*SubModule, error) { return nil, nil } -// GetBranchName gets the closes branch name (as returned by 'git name-rev') +// GetBranchName gets the closes branch name (as returned by 'git name-rev --name-only') func (c *Commit) GetBranchName() (string, error) { - data, err := NewCommand("name-rev", c.ID.String()).RunInDirBytes(c.repo.Path) + data, err := NewCommand("name-rev", "--name-only", c.ID.String()).RunInDir(c.repo.Path) if err != nil { return "", err } - // name-rev commitID output will be "COMMIT_ID master" or "COMMIT_ID master~12" - return strings.Split(strings.Split(string(data), " ")[1], "~")[0], nil + // name-rev commitID output will be "master" or "master~12" + return strings.SplitN(strings.TrimSpace(data), "~", 2)[0], nil } // CommitFileStatus represents status of files in a commit. diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go index c5f6d6cdd6..397c390e84 100644 --- a/modules/git/repo_commit.go +++ b/modules/git/repo_commit.go @@ -454,3 +454,21 @@ func (repo *Repository) getBranches(commit *Commit, limit int) ([]string, error) } return branches, nil } + +// GetCommitsFromIDs get commits from commit IDs +func (repo *Repository) GetCommitsFromIDs(commitIDs []string) (commits *list.List) { + if len(commitIDs) == 0 { + return nil + } + + commits = list.New() + + for _, commitID := range commitIDs { + commit, err := repo.GetCommit(commitID) + if err == nil && commit != nil { + commits.PushBack(commit) + } + } + + return commits +} |