Merge branch 'jk/filter-branch-no-index'
authorJunio C Hamano <gitster@pobox.com>
Fri, 29 Jan 2016 00:10:12 +0000 (16:10 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 29 Jan 2016 00:10:12 +0000 (16:10 -0800)
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

git-filter-branch.sh
t/t7003-filter-branch.sh
index 98f1779cf3241fa12300fbf3dc0c4eff8ab10b61..86b2ff1e07614846465109dcb4b9afed11013839 100755 (executable)
@@ -404,7 +404,7 @@ while read commit parents; do
        then
                tree=$(git write-tree)
        else
-               tree="$commit^{tree}"
+               tree=$(git rev-parse "$commit^{tree}")
        fi
        workdir=$workdir @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \
                "$tree" $parentstr < ../message > ../map/$commit ||
index 8868e6e090e0528f41e11473e7efee3ca54bd6b3..cb8fbd8e5e03a0ff5a176cc947419c357fd65d99 100755 (executable)
@@ -333,6 +333,14 @@ test_expect_success 'prune empty collapsed merges' '
        test_cmp expect actual
 '
 
+test_expect_success 'prune empty works even without index/tree filters' '
+       git rev-list HEAD >expect &&
+       git commit --allow-empty -m empty &&
+       git filter-branch -f --prune-empty HEAD &&
+       git rev-list HEAD >actual &&
+       test_cmp expect actual
+'
+
 test_expect_success '--remap-to-ancestor with filename filters' '
        git checkout master &&
        git reset --hard A &&