gitpython-developers/GitPython — pull request #40 by tomrittervg (2011-12-20 05:23:01+00:00)
Title: I think I found a bug in the diff('diff-against') function regarding reversing ordering...

Pull this repo: https://github.com/tomrittervg/Code-Audit-Feed-Test-Cases

Now do this:
$ python
>>> import git as pygit
>>> c = pygit.Repo('github.com-tomrittervg-Code-Audit-Feed-Test-Cases.git/')
>>> x = c.commit('4aee3ae658c1320619432817d63ec7adabf0f43a')
>>> p = [i for i in x.diff('HEAD~1')][0]

That is this commit: https://github.com/tomrittervg/Code-Audit-Feed-Test-Cases/commit/4aee3ae658c1320619432817d63ec7adabf0f43a
This is the addition of a single file.

Unless I'm misunderstanding git, as well as this documentation: http://packages.python.org/GitPython/0.3.1/tutorial.html#obtaining-diff-information

tdiff = hcommit.diff('HEAD~1') # diff tree against previous tree

x.diff('HEAD~1') ought to give a 'new_file' commit
But it was reversing the commit.

It ran this:
git diff 4aee3ae658c1320619432817d63ec7adabf0f43a HEAD~1 --abbrev=40 --full-index --raw
producing
:100644 000000 5f9b998a3e2916af6671a0f8d296ad7c1fe1490d 0000000000000000000000000000000000000000 D api-call-test.c

When it should be running this:
git diff HEAD~1 4aee3ae658c1320619432817d63ec7adabf0f43a --abbrev=40 --full-index --raw
producing this:
:000000 100644 0000000000000000000000000000000000000000 5f9b998a3e2916af6671a0f8d296ad7c1fe1490d A api-call-test.c

I changed the order of arguments to get it to give a file addition. This would also affect which diff the a_blob and b_blob in a 'M' and how a 'R' behaves... I think.