Skip to content

Commit 2eebac2

Browse files
committed
Merge branch 'jk/pack-objects-bitmap-progress-fix'
When "git pack-objects" makes a literal copy of a part of existing packfile using the reachability bitmaps, its update to the progress meter was broken. * jk/pack-objects-bitmap-progress-fix: pack-objects: update "nr_seen" progress based on pack-reused count
2 parents ab99efc + 8e118e8 commit 2eebac2

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

builtin/pack-objects.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3527,7 +3527,8 @@ static int get_object_list_from_bitmap(struct rev_info *revs)
35273527
&reuse_packfile_bitmap)) {
35283528
assert(reuse_packfile_objects);
35293529
nr_result += reuse_packfile_objects;
3530-
display_progress(progress_state, nr_result);
3530+
nr_seen += reuse_packfile_objects;
3531+
display_progress(progress_state, nr_seen);
35313532
}
35323533

35333534
traverse_bitmap_commit_list(bitmap_git, revs,

t/t5310-pack-bitmaps.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,29 @@ test_expect_success 'truncated bitmap fails gracefully (cache)' '
461461
test_i18ngrep corrupted.bitmap.index stderr
462462
'
463463

464+
test_expect_success 'enumerating progress counts pack-reused objects' '
465+
count=$(git rev-list --objects --all --count) &&
466+
git repack -adb &&
467+
468+
# check first with only reused objects; confirm that our progress
469+
# showed the right number, and also that we did pack-reuse as expected.
470+
# Check only the final "done" line of the meter (there may be an
471+
# arbitrary number of intermediate lines ending with CR).
472+
GIT_PROGRESS_DELAY=0 \
473+
git pack-objects --all --stdout --progress \
474+
</dev/null >/dev/null 2>stderr &&
475+
grep "Enumerating objects: $count, done" stderr &&
476+
grep "pack-reused $count" stderr &&
477+
478+
# now the same but with one non-reused object
479+
git commit --allow-empty -m "an extra commit object" &&
480+
GIT_PROGRESS_DELAY=0 \
481+
git pack-objects --all --stdout --progress \
482+
</dev/null >/dev/null 2>stderr &&
483+
grep "Enumerating objects: $((count+1)), done" stderr &&
484+
grep "pack-reused $count" stderr
485+
'
486+
464487
# have_delta <obj> <expected_base>
465488
#
466489
# Note that because this relies on cat-file, it might find _any_ copy of an

0 commit comments

Comments
 (0)