Merge branch 'kb/maint-filter-branch-disappear' into maint
* kb/maint-filter-branch-disappear: filter-branch: handle "disappearing tree" case correctly in subdir filter
This commit is contained in:
commit
92aeb994d3
@ -252,7 +252,16 @@ while read commit parents; do
|
||||
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"
|
||||
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user