src-d / go-git

Project has been moved to: https://github.com/go-git/go-git
https://github.com/go-git/go-git
Apache License 2.0
4.9k stars 540 forks source link

Equivalent of `git diff --cached` #1279

Open mediocregopher opened 4 years ago

mediocregopher commented 4 years ago

So to do a "normal" diff I would get my two different *object.Tree instances and use object.DiffTree. However with staged changes I'm unsure of how to get a tree, if it's possible at all. It seems that *index.Index only provides a list of files changed, with no way to get a tree. Is it possible to retrieve a diff/patch describing the changes which have been added in the workspace compared to HEAD (or some other arbitrary commit)?

mediocregopher commented 4 years ago

It seems that the buildTreeHelper's BuildTree method mostly does what I want here. Perhaps the buildTreeHelper could be exposed in some way? Or if not the helper directly, having a method on Worktree or Index that called it would be super helpful.