mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
Revert "check_packed_git_idx(): check integrity of the idx file itself."
This reverts c5ced64578
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.
This commit is contained in:
parent
ee3d299e93
commit
e93ec6f9d8
16
sha1_file.c
16
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user