has_sha1_file: don't bother if we are not in a repository
authorJonathan Nieder <jrnieder@gmail.com>
Tue, 11 Apr 2017 22:47:13 +0000 (15:47 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 14 Apr 2017 01:33:11 +0000 (18:33 -0700)
Most callers to this function already require that they are in a
git repository, but there is an exception: "git apply" uses
has_sha1_file to avoid work if the result of applying a binary
patch is already present in the repository. When run outside any
repository, this produces an error:

fatal: BUG: setup_git_env called without repository

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c
index 2eda9291ee307127bdd715f0540994464534429d..18bfb4f448840546ab3d72a42cf389832fe4732c 100644 (file)
@@ -3320,6 +3320,8 @@ int has_sha1_file_with_flags(const unsigned char *sha1, int flags)
 {
        struct pack_entry e;
 
+       if (!startup_info->have_repository)
+               return 0;
        if (find_pack_entry(sha1, &e))
                return 1;
        if (has_loose_object(sha1))