diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2018-07-10 11:34:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-10 11:34:51 +0200 |
commit | 3bd5e82b2512d85becae9677fa06b5a973fd4cfb (patch) | |
tree | 7b5aa42ef1b86540f0e30ab6e79aa0772e5986a7 /plumbing/object/difftree.go | |
parent | 8ad72db0b7e1c03d9fad343890e469d5c3ed757b (diff) | |
parent | 9251ea764df3de13518f974635e76315b2b89e3e (diff) | |
download | go-git-3bd5e82b2512d85becae9677fa06b5a973fd4cfb.tar.gz |
Merge pull request #874 from smola/patchcontextv4.5.0
plumbing: add context to allow cancel on diff/patch computing
Diffstat (limited to 'plumbing/object/difftree.go')
-rw-r--r-- | plumbing/object/difftree.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/plumbing/object/difftree.go b/plumbing/object/difftree.go index ac58c4d..a30a29e 100644 --- a/plumbing/object/difftree.go +++ b/plumbing/object/difftree.go @@ -2,6 +2,7 @@ package object import ( "bytes" + "context" "gopkg.in/src-d/go-git.v4/utils/merkletrie" "gopkg.in/src-d/go-git.v4/utils/merkletrie/noder" @@ -10,6 +11,13 @@ import ( // 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) @@ -17,8 +25,11 @@ func DiffTree(a, b *Tree) (Changes, error) { return bytes.Equal(a.Hash(), b.Hash()) } - merkletrieChanges, err := merkletrie.DiffTree(from, to, hashEqual) + merkletrieChanges, err := merkletrie.DiffTreeContext(ctx, from, to, hashEqual) if err != nil { + if err == merkletrie.ErrCanceled { + return nil, ErrCanceled + } return nil, err } |