filter-branch: handle "disappearing tree" case correctly in subdir filter
The subdirectory filter had a bug to notice that the commit in question did not have anything in the path-limited part of the tree. $commit:$path does not name an empty tree when $path does not appear in $commit. This should fix it. The additional test in t7003 is originally from Kevin Ballard but with fixups. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
c8744d6a8b
commit
5b044ac387
|
@ -252,7 +252,16 @@ while read commit parents; do
|
||||||
git read-tree -i -m $commit
|
git read-tree -i -m $commit
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
git read-tree -i -m $commit:"$filter_subdir"
|
# The commit may not have the subdirectory at all
|
||||||
|
err=$(git read-tree -i -m $commit:"$filter_subdir" 2>&1) || {
|
||||||
|
if ! git rev-parse --verify $commit:"$filter_subdir" 2>/dev/null
|
||||||
|
then
|
||||||
|
rm -f "$GIT_INDEX_FILE"
|
||||||
|
else
|
||||||
|
echo >&2 "$err"
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
}
|
||||||
esac || die "Could not initialize the index"
|
esac || die "Could not initialize the index"
|
||||||
|
|
||||||
GIT_COMMIT=$commit
|
GIT_COMMIT=$commit
|
||||||
|
|
|
@ -179,4 +179,28 @@ test_expect_success 'Name needing quotes' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Subdirectory filter with disappearing trees' '
|
||||||
|
git reset --hard &&
|
||||||
|
git checkout master &&
|
||||||
|
|
||||||
|
mkdir foo &&
|
||||||
|
touch foo/bar &&
|
||||||
|
git add foo &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "Adding foo" &&
|
||||||
|
|
||||||
|
git rm -r foo &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "Removing foo" &&
|
||||||
|
|
||||||
|
mkdir foo &&
|
||||||
|
touch foo/bar &&
|
||||||
|
git add foo &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "Re-adding foo" &&
|
||||||
|
|
||||||
|
git filter-branch -f --subdirectory-filter foo &&
|
||||||
|
test $(git rev-list master | wc -l) = 3
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue