|
- package object
-
- import (
- "bytes"
- "context"
-
- "gopkg.in/src-d/go-git.v4/utils/merkletrie"
- "gopkg.in/src-d/go-git.v4/utils/merkletrie/noder"
- )
-
- // DiffTree compares the content and mode of the blobs found via two
- // tree objects.
- func DiffTree(a, b *Tree) (Changes, error) {
- return DiffTreeContext(context.Background(), a, b)
- }
-
- // DiffTree compares the content and mode of the blobs found via two
- // tree objects. Provided context must be non-nil.
- // An error will be return if context expires
- func DiffTreeContext(ctx context.Context, a, b *Tree) (Changes, error) {
- from := NewTreeRootNode(a)
- to := NewTreeRootNode(b)
-
- hashEqual := func(a, b noder.Hasher) bool {
- return bytes.Equal(a.Hash(), b.Hash())
- }
-
- merkletrieChanges, err := merkletrie.DiffTreeContext(ctx, from, to, hashEqual)
- if err != nil {
- if err == merkletrie.ErrCanceled {
- return nil, ErrCanceled
- }
- return nil, err
- }
-
- return newChanges(merkletrieChanges)
- }
|