improve reliability of fixup_pack_header_footer()
[gitweb.git] / index-pack.c
index ac20a46d1594ee1350b11d001f92bf0a8d887890..411b80d8150984e96db0775d60e5b8793b07d4a3 100644 (file)
@@ -699,6 +699,10 @@ static struct object_entry *append_obj_to_pack(
        write_or_die(output_fd, header, n);
        obj[0].idx.crc32 = crc32(0, Z_NULL, 0);
        obj[0].idx.crc32 = crc32(obj[0].idx.crc32, header, n);
+       obj[0].size = size;
+       obj[0].hdr_size = n;
+       obj[0].type = type;
+       obj[0].real_type = type;
        obj[1].idx.offset = obj[0].idx.offset + n;
        obj[1].idx.offset += write_compressed(output_fd, buf, size, &obj[0].idx.crc32);
        hashcpy(obj->idx.sha1, sha1);
@@ -872,7 +876,9 @@ int main(int argc, char **argv)
        char *index_name_buf = NULL, *keep_name_buf = NULL;
        struct pack_idx_entry **idx_objects;
        unsigned char sha1[20];
+       int nongit = 0;
 
+       setup_git_directory_gently(&nongit);
        git_config(git_index_pack_config, NULL);
 
        for (i = 1; i < argc; i++) {
@@ -976,7 +982,8 @@ int main(int argc, char **argv)
                                nr_objects - nr_objects_initial);
                        stop_progress_msg(&progress, msg);
                        fixup_pack_header_footer(output_fd, sha1,
-                                                curr_pack, nr_objects);
+                                                curr_pack, nr_objects,
+                                                NULL, 0);
                }
                if (nr_deltas != nr_resolved_deltas)
                        die("pack has %d unresolved deltas",