Permalink
Browse files

Merge branch 'jk/has-sha1-file-retry-packed'

When an object is not found after checking the packfiles and then
loose object directory, read_sha1_file() re-checks the packfiles to
prevent racing with a concurrent repacker; teach the same logic to
has_sha1_file().

* jk/has-sha1-file-retry-packed:
  has_sha1_file: re-check pack directory before giving up
  • Loading branch information...
2 parents 541dc4d + 45e8a74 commit 5ff9f2351a4d4dc31b0b11258d587c95826acc57 @gitster gitster committed Sep 17, 2013
Showing with 4 additions and 1 deletion.
  1. +4 −1 sha1_file.c
View
@@ -2995,7 +2995,10 @@ int has_sha1_file(const unsigned char *sha1)
if (find_pack_entry(sha1, &e))
return 1;
- return has_loose_object(sha1);
+ if (has_loose_object(sha1))
+ return 1;
+ reprepare_packed_git();
+ return find_pack_entry(sha1, &e);
}
static void check_tree(const void *buf, size_t size)

0 comments on commit 5ff9f23

Please sign in to comment.