• Show log

    Commit

  • Hash : d3282680
    Author : John Fultz
    Date : 2015-04-20T23:41:04

    Fix index-adding functions to know when to trust filemodes.
    
    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.