Skip to content

Commit 5796c5b

Browse files
committed
Merge branch 'cb/filter-branch-prune-empty-degenerate-merges' into maint
* cb/filter-branch-prune-empty-degenerate-merges: filter-branch: eliminate duplicate mapped parents
2 parents 1a1f7b2 + 79bc4ef commit 5796c5b

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

git-filter-branch.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,13 @@ while read commit parents; do
332332
parentstr=
333333
for parent in $parents; do
334334
for reparent in $(map "$parent"); do
335-
parentstr="$parentstr -p $reparent"
335+
case "$parentstr " in
336+
*" -p $reparent "*)
337+
;;
338+
*)
339+
parentstr="$parentstr -p $reparent"
340+
;;
341+
esac
336342
done
337343
done
338344
if [ "$filter_parent" ]; then

t/t7003-filter-branch.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,17 @@ test_expect_success 'Prune empty commits' '
308308
test_cmp expect actual
309309
'
310310

311+
test_expect_success 'prune empty collapsed merges' '
312+
test_config merge.ff false &&
313+
git rev-list HEAD >expect &&
314+
test_commit to_remove_2 &&
315+
git reset --hard HEAD^ &&
316+
test_merge non-ff to_remove_2 &&
317+
git filter-branch -f --index-filter "git update-index --remove to_remove_2.t" --prune-empty HEAD &&
318+
git rev-list HEAD >actual &&
319+
test_cmp expect actual
320+
'
321+
311322
test_expect_success '--remap-to-ancestor with filename filters' '
312323
git checkout master &&
313324
git reset --hard A &&

0 commit comments

Comments
 (0)