summaryrefslogtreecommitdiff
path: root/graph.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-03-15 01:09:11 +0100
committerCarlos Martín Nieto <[email protected]>2015-03-15 01:09:11 +0100
commit137c4fc3c838a803dddeb2855e726fc30713fdea (patch)
treecc2bbc371b93ed92d4b2f3a1abc2a62d6d578277 /graph.go
parent063bed33a90e7d5b1ece1b6bd1aba04a69a78a28 (diff)
parent76d600f7b3633f78e5f1433c16eba4eddfdad3e0 (diff)
Merge branch 'master' into v22
Diffstat (limited to 'graph.go')
-rw-r--r--graph.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/graph.go b/graph.go
new file mode 100644
index 0000000..e5d7732
--- /dev/null
+++ b/graph.go
@@ -0,0 +1,36 @@
+package git
+
+/*
+#include <git2.h>
+*/
+import "C"
+import (
+ "runtime"
+)
+
+func (repo *Repository) DescendantOf(commit, ancestor *Oid) (bool, error) {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ ret := C.git_graph_descendant_of(repo.ptr, commit.toC(), ancestor.toC())
+ if ret < 0 {
+ return false, MakeGitError(ret)
+ }
+
+ return (ret > 0), nil
+}
+
+func (repo *Repository) AheadBehind(local, upstream *Oid) (ahead, behind int, err error) {
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ var aheadT C.size_t
+ var behindT C.size_t
+
+ ret := C.git_graph_ahead_behind(&aheadT, &behindT, repo.ptr, local.toC(), upstream.toC())
+ if ret < 0 {
+ return 0, 0, MakeGitError(ret)
+ }
+
+ return int(aheadT), int(behindT), nil
+}