From 3cbfdf37f48c7b2f8726ad7e60a963cae1d8fd21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 9 Sep 2013 14:21:16 +0200 Subject: [PATCH] Add Filemode to TreeEntry This field was missing, so let's add it, and let's add the const definitions for the modes while we're here. --- object_test.go | 7 ++++++- tree.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/object_test.go b/object_test.go index 82dce98..41efecf 100644 --- a/object_test.go +++ b/object_test.go @@ -33,10 +33,15 @@ func TestObjectPoymorphism(t *testing.T) { t.Fatalf("Converting back to *Tree is not ok") } - if tree2.EntryByName("README") == nil { + entry := tree2.EntryByName("README") + if entry == nil { t.Fatalf("Tree did not have expected \"README\" entry") } + if entry.Filemode != FilemodeBlob { + t.Fatal("Wrong filemode for \"README\"") + } + _, ok = obj.(*Commit) if ok { t.Fatalf("*Tree is somehow the same as *Commit") diff --git a/tree.go b/tree.go index 9a9fd63..bf5a8b0 100644 --- a/tree.go +++ b/tree.go @@ -13,6 +13,15 @@ import ( "unsafe" ) +const ( + FilemodeNew = 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 { gitObject } @@ -21,6 +30,7 @@ type TreeEntry struct { Name string Id *Oid Type ObjectType + Filemode int } func newTreeEntry(entry *C.git_tree_entry) *TreeEntry { @@ -28,6 +38,7 @@ func newTreeEntry(entry *C.git_tree_entry) *TreeEntry { C.GoString(C.git_tree_entry_name(entry)), newOidFromC(C.git_tree_entry_id(entry)), ObjectType(C.git_tree_entry_type(entry)), + int(C.git_tree_entry_filemode(entry)), } }