Skip to content

Commit a2ec948

Browse files
committed
Merge branch 'jk/filter-branch-no-index'
A recent optimization to filter-branch in v2.7.0 introduced a regression when --prune-empty filter is used, which has been corrected. * jk/filter-branch-no-index: filter-branch: resolve $commit^{tree} in no-index case
2 parents d10e2cb + 1dc413e commit a2ec948

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

git-filter-branch.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ while read commit parents; do
404404
then
405405
tree=$(git write-tree)
406406
else
407-
tree="$commit^{tree}"
407+
tree=$(git rev-parse "$commit^{tree}")
408408
fi
409409
workdir=$workdir @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \
410410
"$tree" $parentstr < ../message > ../map/$commit ||

t/t7003-filter-branch.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,14 @@ test_expect_success 'prune empty collapsed merges' '
333333
test_cmp expect actual
334334
'
335335

336+
test_expect_success 'prune empty works even without index/tree filters' '
337+
git rev-list HEAD >expect &&
338+
git commit --allow-empty -m empty &&
339+
git filter-branch -f --prune-empty HEAD &&
340+
git rev-list HEAD >actual &&
341+
test_cmp expect actual
342+
'
343+
336344
test_expect_success '--remap-to-ancestor with filename filters' '
337345
git checkout master &&
338346
git reset --hard A &&

0 commit comments

Comments
 (0)