summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <[email protected]>2013-06-13 10:09:53 -0700
committerVicent Martí <[email protected]>2013-06-13 10:09:53 -0700
commit551e580a792a1b7f7e46e25d015ff4f835a6d4db (patch)
tree72c1b759de4ae0ac54ed042353535b48d7566531
parent96d411bec4bb9544e48b15fc6e069d77eb0761a8 (diff)
parent535a178afaca3b92363ff573edb442261d00764f (diff)
Merge pull request #28 from Merovius/shorten
Implement ShortenOids
-rw-r--r--git.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/git.go b/git.go
index fdc640a..bc97064 100644
--- a/git.go
+++ b/git.go
@@ -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