Index: Add ReadTree()
This commit is contained in:
parent
f7781c0e00
commit
a8ad0d2040
14
index.go
14
index.go
|
@ -240,6 +240,20 @@ func (v *Index) WriteTreeTo(repo *Repository) (*Oid, error) {
|
||||||
return oid, nil
|
return oid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadTree replaces the contents of the index with those of the given
|
||||||
|
// tree
|
||||||
|
func (v *Index) ReadTree(tree *Tree) error {
|
||||||
|
runtime.LockOSThread()
|
||||||
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
|
ret := C.git_index_read_tree(v.ptr, tree.cast_ptr);
|
||||||
|
if ret < 0 {
|
||||||
|
return MakeGitError(ret)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (v *Index) WriteTree() (*Oid, error) {
|
func (v *Index) WriteTree() (*Oid, error) {
|
||||||
oid := new(Oid)
|
oid := new(Oid)
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,34 @@ func TestCreateRepoAndStage(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIndexReadTree(t *testing.T) {
|
||||||
|
repo := createTestRepo(t)
|
||||||
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
||||||
|
_, _ = seedTestRepo(t, repo)
|
||||||
|
|
||||||
|
ref, err := repo.Head()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
obj, err := ref.Peel(ObjectTree);
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
tree := obj.(*Tree)
|
||||||
|
|
||||||
|
idx, err := NewIndex()
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
err = idx.ReadTree(tree)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
id, err := idx.WriteTreeTo(repo)
|
||||||
|
checkFatal(t, err)
|
||||||
|
|
||||||
|
if tree.Id().Cmp(id) != 0 {
|
||||||
|
t.Fatalf("Read and written trees are not the same")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestIndexWriteTreeTo(t *testing.T) {
|
func TestIndexWriteTreeTo(t *testing.T) {
|
||||||
repo := createTestRepo(t)
|
repo := createTestRepo(t)
|
||||||
defer cleanupTestRepo(t, repo)
|
defer cleanupTestRepo(t, repo)
|
||||||
|
|
Loading…
Reference in New Issue