// iterateCommitTrees iterate all reachable trees from the given commit func iterateCommitTrees( s storer.EncodedObjectStorer, commit *object.Commit, cb func(h plumbing.Hash) error) error { tree, err := commit.Tree() if err != nil { return err } if err := cb(tree.Hash); err != nil { return err } treeWalker := object.NewTreeWalker(tree, true) for { _, e, err := treeWalker.Next() if err == io.EOF { break } if err != nil { return err } if err := cb(e.Hash); err != nil { return err } } return nil }