diff options
Diffstat (limited to 'vendor/github.com/gogs/git-module/commit.go')
-rw-r--r-- | vendor/github.com/gogs/git-module/commit.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/vendor/github.com/gogs/git-module/commit.go b/vendor/github.com/gogs/git-module/commit.go index cab9f464..45c3437b 100644 --- a/vendor/github.com/gogs/git-module/commit.go +++ b/vendor/github.com/gogs/git-module/commit.go @@ -303,3 +303,19 @@ func GetCommitFileStatus(repoPath, commitID string) (*CommitFileStatus, error) { func (c *Commit) FileStatus() (*CommitFileStatus, error) { return GetCommitFileStatus(c.repo.Path, c.ID.String()) } + +// GetFullCommitID returns full length (40) of commit ID by given short SHA in a repository. +func GetFullCommitID(repoPath, shortID string) (string, error) { + if len(shortID) >= 40 { + return shortID, nil + } + + commitID, err := NewCommand("rev-parse", shortID).RunInDir(repoPath) + if err != nil { + if strings.Contains(err.Error(), "exit status 128") { + return "", ErrNotExist{shortID, ""} + } + return "", err + } + return strings.TrimSpace(commitID), nil +} |