summaryrefslogtreecommitdiff
path: root/tree.go
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-03-07 16:43:20 -0800
committerJesse Ezell <[email protected]>2014-03-07 16:43:20 -0800
commit5e163fa2e8281642dbb9dbf6229a9a20387130d2 (patch)
tree4cb1db57f29394349ee1ed6c4c5775dd9a17cbdf /tree.go
parentf5f8e13744f40300864956fdceb3849c724b9bbb (diff)
add blob chunk creation, creation of tree builders for specific trees, minor API cleanup
Diffstat (limited to 'tree.go')
-rw-r--r--tree.go38
1 files changed, 27 insertions, 11 deletions
diff --git a/tree.go b/tree.go
index b3340d6..7070ac7 100644
--- a/tree.go
+++ b/tree.go
@@ -14,13 +14,14 @@ import (
)
type Filemode int
+
const (
- FilemodeNew Filemode = C.GIT_FILEMODE_NEW
- FilemodeTree = C.GIT_FILEMODE_TREE
- FilemodeBlob = C.GIT_FILEMODE_BLOB
- FilemodeBlobExecutable = C.GIT_FILEMODE_BLOB_EXECUTABLE
- FilemodeLink = C.GIT_FILEMODE_LINK
- FilemodeCommit = C.GIT_FILEMODE_COMMIT
+ FilemodeNew Filemode = C.GIT_FILEMODE_NEW
+ FilemodeTree = C.GIT_FILEMODE_TREE
+ FilemodeBlob = C.GIT_FILEMODE_BLOB
+ FilemodeBlobExecutable = C.GIT_FILEMODE_BLOB_EXECUTABLE
+ FilemodeLink = C.GIT_FILEMODE_LINK
+ FilemodeCommit = C.GIT_FILEMODE_COMMIT
)
type Tree struct {
@@ -28,9 +29,9 @@ type Tree struct {
}
type TreeEntry struct {
- Name string
- Id *Oid
- Type ObjectType
+ Name string
+ Id *Oid
+ Type ObjectType
Filemode int
}
@@ -116,7 +117,7 @@ func (t Tree) Walk(callback TreeWalkCallback) error {
}
type TreeBuilder struct {
- ptr *C.git_treebuilder
+ ptr *C.git_treebuilder
repo *Repository
}
@@ -125,7 +126,7 @@ func (v *TreeBuilder) Free() {
C.git_treebuilder_free(v.ptr)
}
-func (v *TreeBuilder) Insert(filename string, id *Oid, filemode int) (error) {
+func (v *TreeBuilder) Insert(filename string, id *Oid, filemode int) error {
cfilename := C.CString(filename)
defer C.free(unsafe.Pointer(cfilename))
@@ -140,6 +141,21 @@ func (v *TreeBuilder) Insert(filename string, id *Oid, filemode int) (error) {
return nil
}
+func (v *TreeBuilder) Remove(filename string) error {
+ cfilename := C.CString(filename)
+ defer C.free(unsafe.Pointer(cfilename))
+
+ runtime.LockOSThread()
+ defer runtime.UnlockOSThread()
+
+ err := C.git_treebuilder_remove(v.ptr, cfilename)
+ if err < 0 {
+ return MakeGitError(err)
+ }
+
+ return nil
+}
+
func (v *TreeBuilder) Write() (*Oid, error) {
oid := new(Oid)