diff options
| author | Vicent Martà <[email protected]> | 2013-06-13 10:09:53 -0700 |
|---|---|---|
| committer | Vicent Martà <[email protected]> | 2013-06-13 10:09:53 -0700 |
| commit | 551e580a792a1b7f7e46e25d015ff4f835a6d4db (patch) | |
| tree | 72c1b759de4ae0ac54ed042353535b48d7566531 | |
| parent | 96d411bec4bb9544e48b15fc6e069d77eb0761a8 (diff) | |
| parent | 535a178afaca3b92363ff573edb442261d00764f (diff) | |
Merge pull request #28 from Merovius/shorten
Implement ShortenOids
| -rw-r--r-- | git.go | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -96,6 +96,26 @@ func (oid *Oid) NCmp(oid2 *Oid, n uint) int { return bytes.Compare(oid.bytes[:n], oid2.bytes[:n]) } +func ShortenOids(ids []*Oid, minlen int) (int, error) { + shorten := C.git_oid_shorten_new(C.size_t(minlen)) + if shorten == nil { + panic("Out of memory") + } + defer C.git_oid_shorten_free(shorten) + + var ret C.int + for _, id := range ids { + buf := make([]byte, 41) + C.git_oid_fmt((*C.char)(unsafe.Pointer(&buf[0])), id.toC()) + buf[40] = 0 + ret = C.git_oid_shorten_add(shorten, (*C.char)(unsafe.Pointer(&buf[0]))) + if ret < 0 { + return int(ret), LastError() + } + } + return int(ret), nil +} + type GitError struct { Message string Code int |
