mirror of
https://github.com/go-gitea/git.git
synced 2026-06-30 20:37:55 -04:00
Add function to resolve short commit ID to full SHA1 (#122)
* Add function to resolve short commit ID to full SHA1 * Add tests for GetFullCommitID
This commit is contained in:
@@ -274,3 +274,19 @@ func (c *Commit) GetSubModule(entryname string) (*SubModule, error) {
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
@@ -14,3 +14,17 @@ func TestCommitsCount(t *testing.T) {
|
||||
commitsCount, _ := CommitsCount(".", "d86a90f801dbe279db095437a8c7ea42c60e8d98")
|
||||
assert.Equal(t, int64(3), commitsCount)
|
||||
}
|
||||
|
||||
func TestGetFullCommitID(t *testing.T) {
|
||||
id, err := GetFullCommitID(".", "d86a90f8")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "d86a90f801dbe279db095437a8c7ea42c60e8d98", id)
|
||||
}
|
||||
|
||||
func TestGetFullCommitIDError(t *testing.T) {
|
||||
id, err := GetFullCommitID(".", "unknown")
|
||||
assert.Empty(t, id)
|
||||
if assert.Error(t, err) {
|
||||
assert.EqualError(t, err, "object does not exist [id: unknown, rel_path: ]")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user