Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a proof of concept.
Diffy currently uses a subprocesses to obtain a diff. This instead uses libgit through the gem rugged. I have opted to ignore backwards compatibility for this. There is probably a way you can have the current mode and this coexist but that would have introduced a bunch more complexity (I also don't see why you'd want to maintain both versions anyways).
Almost all tests are passing, except a few outliers I couldn't quite figure out myself.
This version is faster since it doesn't have to spawn subprocesses and is easier to install and deploy because rugged comes with everything it needs out of the box.
Connects to #123
Here is a monkeypatch to make use of this today. It's lacking quite a few features normally found in the gem but it works for my specific usecase and can easily extended.