1. 21 Apr, 2015 1 commit
    • Fix index-adding functions to know when to trust filemodes. · d3282680
      The idea...sometimes, a filemode is user-specified via an
      explicit git_index_entry.  In this case, believe the user, always.
      
      Sometimes, it is instead built up by statting the file system.  In
      those cases, go with the existing logic we have to determine
      whether the file system supports all filemodes and symlinks, and
      make the best guess.
      
      On file systems which have full filemode and symlink support, this
      commit should make no difference.  On others (most notably Windows),
      this will fix problems things like:
      * git_index_add and git_index_add_frombuffer() should be believed.
      * As a consequence, git_checkout_tree should make the filemodes in
      the index match the ones in the tree.
      * And diffs with GIT_DIFF_UPDATE_INDEX don't write the wrong filemodes.
      * And merges, and probably other downstream stuff now fixed, too.
      
      This makes my previous changes to checkout.c unnecessary,
      so they are now reverted.
      
      Also, added a test for index_entry permissions from git_index_add
      and git_index_add_frombuffer, both of which failed before these changes.
      John Fultz committed
  2. 16 Apr, 2015 1 commit
  3. 06 Apr, 2015 1 commit
    • Fix git_checkout_tree() to do index filemodes correctly on Windows. · 67db2bde
      git_checkout_tree() has some fallback behaviors for file systems
      which don't have full support of filemodes.  Generally works fine,
      but if a given file had a change of type from a 0644 to 0755 (i.e.,
      you add executable permissions), the fallback behavior incorrectly
      triggers when writing hte updated index.
      
      This would cause a git_checkout_tree() command, even with the
      GIT_CHECKOUT_FORCE option set, to leave a dirty index on Windows.
      
      Also added checks to an existing test to catch this case.
      John Fultz committed
  4. 04 Apr, 2015 2 commits
  5. 01 Apr, 2015 1 commit
  6. 30 Mar, 2015 1 commit
  7. 25 Mar, 2015 4 commits
  8. 24 Mar, 2015 6 commits
  9. 23 Mar, 2015 1 commit
  10. 21 Mar, 2015 1 commit
  11. 20 Mar, 2015 2 commits
  12. 19 Mar, 2015 5 commits
  13. 18 Mar, 2015 8 commits
  14. 17 Mar, 2015 6 commits