Create a diff between a tree and repository index.
This is equivalent to git diff --cached <treeish>
or if you pass
the HEAD tree, then like git diff --cached
.
The tree you pass will be used for the "old_file" side of the delta, and the index will be used for the "new_file" side of the delta.
If you pass NULL for the index, then the existing index of the repo
will be used. In this case, the index will be refreshed from disk
(if it has changed) before the diff is generated.
0 or an error code.