From 22495763b73d1560c5c8b8182ee8b723adee1bcd Mon Sep 17 00:00:00 2001 From: Jose Alvarez Date: Tue, 13 Oct 2015 11:31:00 -0400 Subject: [PATCH 1/4] Expose AddGitIgnoreRules and ClearGitIgnoreRules funcs --- repository.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/repository.go b/repository.go index 62fde6d..12638e1 100644 --- a/repository.go +++ b/repository.go @@ -433,3 +433,24 @@ func (r *Repository) StateCleanup() error { } return nil } +func (r *Repository) AddGitIgnoreRules(rules string) error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + crules := C.CString(rules) + defer C.free(unsafe.Pointer(crules)) + if ret := C.git_ignore_add_rule(r.ptr, crules); ret < 0 { + return MakeGitError(ret) + } + return nil +} + +func (r *Repository) ClearGitIgnoreRules() error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + if ret := C.git_ignore_clear_internal_rules(r.ptr); ret < 0 { + return MakeGitError(ret) + } + return nil +} From 51d3ead30d58d523cef5aaea1666c8e28a94dc42 Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Mon, 4 Jan 2016 15:02:21 +0100 Subject: [PATCH 2/4] Don't drop CreateBlobFromChunks hintPath argument --- blob.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blob.go b/blob.go index b1fc78a..382bb9e 100644 --- a/blob.go +++ b/blob.go @@ -84,7 +84,7 @@ func (repo *Repository) CreateBlobFromChunks(hintPath string, callback BlobChunk var chintPath *C.char = nil if len(hintPath) > 0 { - C.CString(hintPath) + chintPath = C.CString(hintPath) defer C.free(unsafe.Pointer(chintPath)) } oid := C.git_oid{} From 773ac24a16da6261e0f31b9354a9c890b1002422 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 2 Feb 2016 19:02:15 +0100 Subject: [PATCH 3/4] Expose git_odb_read_header as Odb.ReadHeader. This function is much faster for discovering sizes for a given OID. --- odb.go | 15 +++++++++++++++ odb_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/odb.go b/odb.go index b15851f..d881f63 100644 --- a/odb.go +++ b/odb.go @@ -54,6 +54,21 @@ func (v *Odb) AddBackend(backend *OdbBackend, priority int) (err error) { return nil } +func (v *Odb) ReadHeader(oid *Oid) (uint64, ObjectType, error) { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + var sz C.size_t + var cotype C.git_otype + + ret := C.git_odb_read_header(&sz, &cotype, v.ptr, oid.toC()) + if ret < 0 { + return 0, C.GIT_OBJ_BAD, MakeGitError(ret) + } + + return uint64(sz), ObjectType(cotype), nil +} + func (v *Odb) Exists(oid *Oid) bool { ret := C.git_odb_exists(v.ptr, oid.toC()) return ret != 0 diff --git a/odb_test.go b/odb_test.go index 0d765b9..dfd2ad0 100644 --- a/odb_test.go +++ b/odb_test.go @@ -6,6 +6,34 @@ import ( "testing" ) +func TestOdbReadHeader(t *testing.T) { + repo := createTestRepo(t) + defer cleanupTestRepo(t, repo) + + _, _ = seedTestRepo(t, repo) + odb, err := repo.Odb() + if err != nil { + t.Fatalf("Odb: %v", err) + } + data := []byte("hello") + id, err := odb.Write(data, ObjectBlob) + if err != nil { + t.Fatalf("odb.Write: %v", err) + } + + sz, typ, err := odb.ReadHeader(id) + if err != nil { + t.Fatalf("ReadHeader: %v", err) + } + + if sz != uint64(len(data)) { + t.Errorf("ReadHeader got size %d, want %d", sz, len(data)) + } + if typ != ObjectBlob { + t.Errorf("ReadHeader got object type %s", typ) + } +} + func TestOdbStream(t *testing.T) { repo := createTestRepo(t) defer cleanupTestRepo(t, repo) From b876e836fa76747b34832f42c354934854601f7d Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 7 Feb 2016 03:12:35 +0000 Subject: [PATCH 4/4] Add RevWalk.SimplifyFirstParent() --- walk.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/walk.go b/walk.go index c314f60..60e618d 100644 --- a/walk.go +++ b/walk.go @@ -194,6 +194,10 @@ func (v *RevWalk) Iterate(fun RevWalkIterator) (err error) { return nil } +func (v *RevWalk) SimplifyFirstParent() { + C.git_revwalk_simplify_first_parent(v.ptr) +} + func (v *RevWalk) Sorting(sm SortType) { C.git_revwalk_sorting(v.ptr, C.uint(sm)) }