libgit2/libgit2 — pull request #968 by arrbee (2012-10-08 22:40:46+00:00)
Title: Support TYPECHANGE records in status and adjust checkout accordingly

Type changes of files are not handling quite the same in our status implementation as they are in core git. The discrepancy results in different status output but also results in errors while processing type changes in checkout.

This adds more robust typechange support into diff and status, and then fixes checkout's ability to deal with type changes.

It also adds rudimentary submodule support to checkout (not that the actual checkout is done, but at least there is no error and a placeholder directory will be created). It also fixes a checkout bug with setting the executable bit on files that are type changed to be executable.

This is all exercised by some new test data that contains every sort of type change and then a test that tries to checkout each one of a series of commits in order.