git-pack-objects: write the pack files with a SHA1 csum

We want to be able to check their integrity later, and putting the
sha1-sum of the contents at the end is a good thing.  The writing
routines are generic, so we could try to re-use them for the index file,
instead of having the same logic duplicated.

Update unpack-objects to know about the extra 20 bytes at the end
of the index.
This commit is contained in:
Linus Torvalds
2005-06-26 20:27:56 -07:00
parent 9b66ec0474
commit c38138cd78
5 changed files with 158 additions and 62 deletions

View File

@ -61,7 +61,7 @@ static int check_index(void)
unsigned int nr;
int i;
if (index_size < 4*256)
if (index_size < 4*256 + 20)
return error("index file too small");
nr = 0;
for (i = 0; i < 256; i++) {
@ -70,11 +70,14 @@ static int check_index(void)
return error("non-monotonic index");
nr = n;
}
if (index_size != 4*256 + nr * 24) {
printf("index_size=%lu, expected %u (%u)\n",
index_size, 4*256 + nr * 24, nr);
/*
* Total size:
* - 256 index entries 4 bytes each
* - 24-byte entries * nr (20-byte sha1 + 4-byte offset)
* - 20-byte SHA1 file checksum
*/
if (index_size != 4*256 + nr * 24 + 20)
return error("wrong index file size");
}
nr_entries = nr;
pack_list = xmalloc(nr * sizeof(struct pack_entry *));