]> asedeno.scripts.mit.edu Git - git.git/blobdiff - t/t7003-filter-branch.sh
Merge branch 'maint-1.6.6' into maint
[git.git] / t / t7003-filter-branch.sh
index 329c851685b1c663ee88d45a5d21d452a293fa8e..0da13a8d6b8f75ba041a353dfc6a356c1e8bbed0 100755 (executable)
@@ -288,4 +288,61 @@ test_expect_success 'Prune empty commits' '
        test_cmp expect actual
 '
 
+test_expect_success '--remap-to-ancestor with filename filters' '
+       git checkout master &&
+       git reset --hard A &&
+       test_commit add-foo foo 1 &&
+       git branch moved-foo &&
+       test_commit add-bar bar a &&
+       git branch invariant &&
+       orig_invariant=$(git rev-parse invariant) &&
+       git branch moved-bar &&
+       test_commit change-foo foo 2 &&
+       git filter-branch -f --remap-to-ancestor \
+               moved-foo moved-bar A..master \
+               -- -- foo &&
+       test $(git rev-parse moved-foo) = $(git rev-parse moved-bar) &&
+       test $(git rev-parse moved-foo) = $(git rev-parse master^) &&
+       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