• J
    hash-object: always try to set up the git repository · 0e94ee94
    Jeff King 提交于
    When "hash-object" is run without "-w", we don't need to be
    in a git repository at all; we can just hash the object and
    write its sha1 to stdout. However, if we _are_ in a git
    repository, we would want to know that so we can follow the
    normal rules for respecting config, .gitattributes, etc.
    
    This happens to work at the top-level of a git repository
    because we blindly read ".git/config", but as the included
    test shows, it does not work when you are in a subdirectory.
    
    The solution is to just do a "gentle" setup in this case. We
    already take care to use prefix_filename() on any filename
    arguments we get (to handle the "-w" case), so we don't need
    to do anything extra to handle the side effects of repo
    setup.
    
    An alternative would be to specify RUN_SETUP_GENTLY for this
    command in git.c, and then die if "-w" is set but we are not
    in a repository. However, the error messages generated at
    the time of setup_git_directory() are more detailed, so it's
    better to find out which mode we are in, and then call the
    appropriate function.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    0e94ee94
hash-object.c 4.4 KB