diff options
author | Jeff King <peff@peff.net> | 2016-12-16 16:43:22 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-12-16 13:57:19 -0800 |
commit | 29401e15754518a0e63e00d6cabc5a5f2f9b0973 (patch) | |
tree | 495ad9972f0561094c10857d3678cd46a7c0b7d8 | |
parent | a3c45d126012e01b23edc4923ffddffac61d703b (diff) | |
download | git-29401e15754518a0e63e00d6cabc5a5f2f9b0973.tar.gz git-29401e15754518a0e63e00d6cabc5a5f2f9b0973.tar.xz |
index-pack: skip collision check when not in repository
You can run "git index-pack path/to/foo.pack" outside of a
repository to generate an index file, or just to verify the
contents. There's no point in doing a collision check, since
we obviously do not have any objects to collide with.
The current code will blindly look in .git/objects based on
the result of setup_git_env(). That effectively gives us the
right answer (since we won't find any objects), but it's a
waste of time, and it conflicts with our desire to
eventually get rid of the "fallback to .git" behavior of
setup_git_env().
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/index-pack.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index d450a6ada..f4b87c6c9 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -787,13 +787,15 @@ static void sha1_object(const void *data, struct object_entry *obj_entry, const unsigned char *sha1) { void *new_data = NULL; - int collision_test_needed; + int collision_test_needed = 0; assert(data || obj_entry); - read_lock(); - collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK); - read_unlock(); + if (startup_info->have_repository) { + read_lock(); + collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK); + read_unlock(); + } if (collision_test_needed && !data) { read_lock(); |