summaryrefslogtreecommitdiff
path: root/repository.go
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-03-11 12:42:08 -0700
committerJesse Ezell <[email protected]>2014-03-11 12:42:08 -0700
commit7cbbeff7ac9fd559f207b0f7aa200f537cc42598 (patch)
treea4c6cd33a420630ea0d3cd6a358064cbe6114b9f /repository.go
parent5f5906878ebb6db6b1841e42c368f5b69fd7794d (diff)
parent1cf81178141c504c62bb3faaa406db665dc5471a (diff)
merge with latest
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go24
1 files changed, 19 insertions, 5 deletions
diff --git a/repository.go b/repository.go
index f6bfcb4..c1ee9d3 100644
--- a/repository.go
+++ b/repository.go
@@ -206,19 +206,18 @@ func (v *Repository) CreateSymbolicReference(name, target string, force bool, si
}
func (v *Repository) Walk() (*RevWalk, error) {
- walk := new(RevWalk)
+
+ var walkPtr *C.git_revwalk
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- ecode := C.git_revwalk_new(&walk.ptr, v.ptr)
+ ecode := C.git_revwalk_new(&walkPtr, v.ptr)
if ecode < 0 {
return nil, MakeGitError(ecode)
}
- walk.repo = v
- runtime.SetFinalizer(walk, freeRevWalk)
- return walk, nil
+ return revWalkFromC(v, walkPtr), nil
}
func (v *Repository) CreateCommit(
@@ -326,6 +325,21 @@ func (v *Repository) TreeBuilder() (*TreeBuilder, error) {
return bld, nil
}
+func (v *Repository) TreeBuilderFromTree(tree *Tree) (*TreeBuilder, error) {
+ bld := new(TreeBuilder)
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ if ret := C.git_treebuilder_create(&bld.ptr, tree.ptr); ret < 0 {
+ return nil, MakeGitError(ret)
+ }
+ runtime.SetFinalizer(bld, (*TreeBuilder).Free)
+
+ bld.repo = v
+ return bld, nil
+}
+
func (v *Repository) RevparseSingle(spec string) (Object, error) {
cspec := C.CString(spec)
defer C.free(unsafe.Pointer(cspec))