diff options
| author | Carlos MartÃn Nieto <[email protected]> | 2016-10-31 20:03:05 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-10-31 20:03:05 +0100 |
| commit | 42a90d4e68177eb2caad5eb4eed94bf01db308c2 (patch) | |
| tree | ced946be713d218639d70399dd24116571ec243d | |
| parent | e9668545c972870637b79670bcb532401353c3d6 (diff) | |
| parent | c18c8693feb805d9ffbd1d22444683ce5ac96477 (diff) | |
Merge pull request #351 from ezwiebel/index-remove-directory
Implement git_index_remove_directory in index wrapper
| -rw-r--r-- | index.go | 16 | ||||
| -rw-r--r-- | index_test.go | 40 |
2 files changed, 56 insertions, 0 deletions
@@ -278,6 +278,22 @@ func (v *Index) RemoveByPath(path string) error { return nil } +// RemoveDirectory removes all entries from the index under a given directory. +func (v *Index) RemoveDirectory(dir string, stage int) error { + cstr := C.CString(dir) + defer C.free(unsafe.Pointer(cstr)) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ret := C.git_index_remove_directory(v.ptr, cstr, C.int(stage)) + if ret < 0 { + return MakeGitError(ret) + } + + return nil +} + func (v *Index) WriteTreeTo(repo *Repository) (*Oid, error) { oid := new(Oid) diff --git a/index_test.go b/index_test.go index 600b8b1..f47dace 100644 --- a/index_test.go +++ b/index_test.go @@ -109,6 +109,46 @@ func TestIndexAddAndWriteTreeTo(t *testing.T) { } } +func TestIndexRemoveDirectory(t *testing.T) { + repo := createTestRepo(t) + defer cleanupTestRepo(t, repo) + + odb, err := repo.Odb() + checkFatal(t, err) + + blobID, err := odb.Write([]byte("fou\n"), ObjectBlob) + checkFatal(t, err) + + idx, err := NewIndex() + checkFatal(t, err) + + entryCount := idx.EntryCount() + if entryCount != 0 { + t.Fatal("Index should count 0 entry") + } + + entry := IndexEntry{ + Path: "path/to/LISEZ_MOI", + Id: blobID, + Mode: FilemodeBlob, + } + + err = idx.Add(&entry) + checkFatal(t, err) + + entryCount = idx.EntryCount() + if entryCount != 1 { + t.Fatal("Index should count 1 entry") + } + + err = idx.RemoveDirectory("path", 0) + + entryCount = idx.EntryCount() + if entryCount != 0 { + t.Fatal("Index should count 0 entry") + } +} + func TestIndexAddAllNoCallback(t *testing.T) { t.Parallel() repo := createTestRepo(t) |
