]>
Commit | Line | Data |
---|---|---|
83bd7437 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='filter-branch removal of trees with null sha1' | |
a52f07af | 4 | |
83bd7437 JK |
5 | . ./test-lib.sh |
6 | ||
7 | test_expect_success 'setup: base commits' ' | |
8 | test_commit one && | |
9 | test_commit two && | |
10 | test_commit three | |
11 | ' | |
12 | ||
13 | test_expect_success 'setup: a commit with a bogus null sha1 in the tree' ' | |
14 | { | |
15 | git ls-tree HEAD && | |
8125a58b | 16 | printf "160000 commit $ZERO_OID\\tbroken\\n" |
99094a7a | 17 | } >broken-tree && |
83bd7437 JK |
18 | echo "add broken entry" >msg && |
19 | ||
20 | tree=$(git mktree <broken-tree) && | |
21 | test_tick && | |
22 | commit=$(git commit-tree $tree -p HEAD <msg) && | |
23 | git update-ref HEAD "$commit" | |
24 | ' | |
25 | ||
26 | # we have to make one more commit on top removing the broken | |
27 | # entry, since otherwise our index does not match HEAD (and filter-branch will | |
28 | # complain). We could make the index match HEAD, but doing so would involve | |
29 | # writing a null sha1 into the index. | |
30 | test_expect_success 'setup: bring HEAD and index in sync' ' | |
31 | test_tick && | |
32 | git commit -a -m "back to normal" | |
33 | ' | |
34 | ||
a96d3cc3 JK |
35 | test_expect_success 'noop filter-branch complains' ' |
36 | test_must_fail git filter-branch \ | |
37 | --force --prune-empty \ | |
38 | --index-filter "true" | |
39 | ' | |
40 | ||
83bd7437 JK |
41 | test_expect_success 'filter commands are still checked' ' |
42 | test_must_fail git filter-branch \ | |
43 | --force --prune-empty \ | |
44 | --index-filter "git rm --cached --ignore-unmatch three.t" | |
45 | ' | |
46 | ||
47 | test_expect_success 'removing the broken entry works' ' | |
48 | echo three >expect && | |
49 | git filter-branch \ | |
50 | --force --prune-empty \ | |
51 | --index-filter "git rm --cached --ignore-unmatch broken" && | |
52 | git log -1 --format=%s >actual && | |
53 | test_cmp expect actual | |
54 | ' | |
55 | ||
56 | test_done |