]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/pack-objects.c
Merge branch 'jk/pack-objects-negative-options-fix'
[thirdparty/git.git] / builtin / pack-objects.c
index da5e0700f9c1103a98e63ef277556ad414088663..6ded130e45b0c341794ba332e12198db0519befe 100644 (file)
@@ -1030,7 +1030,7 @@ static void write_pack_file(void)
        write_order = compute_write_order();
 
        do {
-               struct object_id oid;
+               unsigned char hash[GIT_MAX_RAWSZ];
                char *pack_tmp_name = NULL;
 
                if (pack_to_stdout)
@@ -1059,13 +1059,13 @@ static void write_pack_file(void)
                 * If so, rewrite it like in fast-import
                 */
                if (pack_to_stdout) {
-                       finalize_hashfile(f, oid.hash, CSUM_HASH_IN_STREAM | CSUM_CLOSE);
+                       finalize_hashfile(f, hash, CSUM_HASH_IN_STREAM | CSUM_CLOSE);
                } else if (nr_written == nr_remaining) {
-                       finalize_hashfile(f, oid.hash, CSUM_HASH_IN_STREAM | CSUM_FSYNC | CSUM_CLOSE);
+                       finalize_hashfile(f, hash, CSUM_HASH_IN_STREAM | CSUM_FSYNC | CSUM_CLOSE);
                } else {
-                       int fd = finalize_hashfile(f, oid.hash, 0);
-                       fixup_pack_header_footer(fd, oid.hash, pack_tmp_name,
-                                                nr_written, oid.hash, offset);
+                       int fd = finalize_hashfile(f, hash, 0);
+                       fixup_pack_header_footer(fd, hash, pack_tmp_name,
+                                                nr_written, hash, offset);
                        close(fd);
                        if (write_bitmap_index) {
                                if (write_bitmap_index != WRITE_BITMAP_QUIET)
@@ -1100,17 +1100,17 @@ static void write_pack_file(void)
                        strbuf_addf(&tmpname, "%s-", base_name);
 
                        if (write_bitmap_index) {
-                               bitmap_writer_set_checksum(oid.hash);
+                               bitmap_writer_set_checksum(hash);
                                bitmap_writer_build_type_index(
                                        &to_pack, written_list, nr_written);
                        }
 
                        finish_tmp_packfile(&tmpname, pack_tmp_name,
                                            written_list, nr_written,
-                                           &pack_idx_opts, oid.hash);
+                                           &pack_idx_opts, hash);
 
                        if (write_bitmap_index) {
-                               strbuf_addf(&tmpname, "%s.bitmap", oid_to_hex(&oid));
+                               strbuf_addf(&tmpname, "%s.bitmap", hash_to_hex(hash));
 
                                stop_progress(&progress_state);
 
@@ -1124,7 +1124,7 @@ static void write_pack_file(void)
 
                        strbuf_release(&tmpname);
                        free(pack_tmp_name);
-                       puts(oid_to_hex(&oid));
+                       puts(hash_to_hex(hash));
                }
 
                /* mark written objects as written to previous pack */
@@ -3479,6 +3479,7 @@ static void loosen_unused_packed_objects(void)
 {
        struct packed_git *p;
        uint32_t i;
+       uint32_t loosened_objects_nr = 0;
        struct object_id oid;
 
        for (p = get_all_packs(the_repository); p; p = p->next) {
@@ -3492,11 +3493,16 @@ static void loosen_unused_packed_objects(void)
                        nth_packed_object_id(&oid, p, i);
                        if (!packlist_find(&to_pack, &oid) &&
                            !has_sha1_pack_kept_or_nonlocal(&oid) &&
-                           !loosened_object_can_be_discarded(&oid, p->mtime))
+                           !loosened_object_can_be_discarded(&oid, p->mtime)) {
                                if (force_object_loose(&oid, p->mtime))
                                        die(_("unable to force loose object"));
+                               loosened_objects_nr++;
+                       }
                }
        }
+
+       trace2_data_intmax("pack-objects", the_repository,
+                          "loosen_unused_packed_objects/loosened", loosened_objects_nr);
 }
 
 /*
@@ -3516,7 +3522,7 @@ static int pack_options_allow_reuse(void)
 
 static int get_object_list_from_bitmap(struct rev_info *revs)
 {
-       if (!(bitmap_git = prepare_bitmap_walk(revs, &filter_options)))
+       if (!(bitmap_git = prepare_bitmap_walk(revs, &filter_options, 0)))
                return -1;
 
        if (pack_options_allow_reuse() &&