Skip to content

Commit

Permalink
filter-branch: Add tests for submodules in tree-filter
Browse files Browse the repository at this point in the history
Add tests to make sure that:

1) a submodule can be removed and its content replaced with regular files
   ('rewrite submodule with another content'). This test passes only with
   the previous patch applied.

2) it is possible to replace submodule revision by direct index
   manipulation ('replace submodule revision'). Although it would be
   better to run such a filter in --index-filter, this test shows that
   this functionality is not broken by the previous patch. This succeeds
   both with and without the previous patch.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michal Sojka authored and Junio C Hamano committed Jan 28, 2010
1 parent 03ca839 commit 1f7d57f
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions t/t7003-filter-branch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -306,4 +306,43 @@ test_expect_success '--remap-to-ancestor with filename filters' '
test $orig_invariant = $(git rev-parse invariant)
'

test_expect_success 'setup submodule' '
rm -fr ?* .git &&
git init &&
test_commit file &&
mkdir submod &&
submodurl="$PWD/submod" &&
( cd submod &&
git init &&
test_commit file-in-submod ) &&
git submodule add "$submodurl" &&
git commit -m "added submodule" &&
test_commit add-file &&
( cd submod && test_commit add-in-submodule ) &&
git add submod &&
git commit -m "changed submodule" &&
git branch original HEAD
'

orig_head=`git show-ref --hash --head HEAD`

test_expect_success 'rewrite submodule with another content' '
git filter-branch --tree-filter "test -d submod && {
rm -rf submod &&
git rm -rf --quiet submod &&
mkdir submod &&
: > submod/file
} || :" HEAD &&
test $orig_head != `git show-ref --hash --head HEAD`
'

test_expect_success 'replace submodule revision' '
git reset --hard original &&
git filter-branch -f --tree-filter \
"if git ls-files --error-unmatch -- submod > /dev/null 2>&1
then git update-index --cacheinfo 160000 0123456789012345678901234567890123456789 submod
fi" HEAD &&
test $orig_head != `git show-ref --hash --head HEAD`
'

test_done

0 comments on commit 1f7d57f

Please sign in to comment.