aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-01-18 20:26:14 -0800
committerJunio C Hamano <junkio@cox.net>2006-01-19 18:29:11 -0800
commite93ec6f9d8dd122557d54505129f7860b9301503 (patch)
treed09a24007dad4963163049402b29519209b051a5
parentee3d299e93450586d12f099913261ec22849365a (diff)
downloadgit-e93ec6f9d8dd122557d54505129f7860b9301503.tar.gz
git-e93ec6f9d8dd122557d54505129f7860b9301503.tar.xz
Revert "check_packed_git_idx(): check integrity of the idx file itself."
This reverts c5ced64578a82b9d172aceb2f67c6fb9e639f6d9 commit. It turns out that doing this check every time we map the idx file is quite expensive. A corrupt idx file is caught by git-fsck-objects, so this check is not strictly necessary. In one unscientific test, 0.99.9m spent 10 seconds usertime for the same task 1.1.3 takes 37 seconds usertime. Reverting this gives us the performance of 0.99.9 back.
-rw-r--r--sha1_file.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/sha1_file.c b/sha1_file.c
index 6b7577dbc..d451a94ef 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -321,16 +321,12 @@ struct packed_git *packed_git;
static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
void **idx_map_)
{
- SHA_CTX ctx;
- unsigned char sha1[20];
void *idx_map;
unsigned int *index;
unsigned long idx_size;
int nr, i;
- int fd;
+ int fd = open(path, O_RDONLY);
struct stat st;
-
- fd = open(path, O_RDONLY);
if (fd < 0)
return -1;
if (fstat(fd, &st)) {
@@ -368,16 +364,6 @@ static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
if (idx_size != 4*256 + nr * 24 + 20 + 20)
return error("wrong index file size");
- /*
- * File checksum.
- */
- SHA1_Init(&ctx);
- SHA1_Update(&ctx, idx_map, idx_size-20);
- SHA1_Final(sha1, &ctx);
-
- if (memcmp(sha1, idx_map + idx_size - 20, 20))
- return error("index checksum mismatch");
-
return 0;
}