libgit2/libgit2 — pull request #2070 by ethomson (2014-01-22 18:29:52+00:00)
Title: Preserve tree filemode in index during checkout

Don't try to determine whether the system supports file modes when putting the tree data in the index during checkout. The tree's mode is canonical and did not come from `stat(2)` in the first place so cannot be incorrect.

Letting the index entry creation neuter the file mode means that the index entries end up with mode 0644 on Windows, and cloning the libgit2 repository means that we try to stage filemode changes:

C:\Temp\libgit2>git status
# On branch development
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: examples/test/test-rev-list.sh
# modified: script/cibuild.sh
# modified: script/coverity.sh
# modified: tests/resources/filemodes/exec_off2on_staged
# modified: tests/resources/filemodes/exec_off2on_workdir
# modified: tests/resources/filemodes/exec_on
# modified: tests/resources/filemodes/exec_on_untracked
# modified: tests/resources/template/hooks/update.sample
#