]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | # | |
3 | # Copyright (c) 2008 Christian Couder | |
4 | # | |
5 | test_description='Tests replace refs functionality' | |
6 | ||
7 | exec </dev/null | |
8 | ||
9 | . ./test-lib.sh | |
10 | ||
11 | add_and_commit_file() | |
12 | { | |
13 | _file="$1" | |
14 | _msg="$2" | |
15 | ||
16 | git add $_file || return $? | |
17 | test_tick || return $? | |
18 | git commit --quiet -m "$_file: $_msg" | |
19 | } | |
20 | ||
21 | HASH1= | |
22 | HASH2= | |
23 | HASH3= | |
24 | HASH4= | |
25 | HASH5= | |
26 | HASH6= | |
27 | HASH7= | |
28 | ||
29 | test_expect_success 'set up buggy branch' ' | |
30 | echo "line 1" >> hello && | |
31 | echo "line 2" >> hello && | |
32 | echo "line 3" >> hello && | |
33 | echo "line 4" >> hello && | |
34 | add_and_commit_file hello "4 lines" && | |
35 | HASH1=$(git rev-parse --verify HEAD) && | |
36 | echo "line BUG" >> hello && | |
37 | echo "line 6" >> hello && | |
38 | echo "line 7" >> hello && | |
39 | echo "line 8" >> hello && | |
40 | add_and_commit_file hello "4 more lines with a BUG" && | |
41 | HASH2=$(git rev-parse --verify HEAD) && | |
42 | echo "line 9" >> hello && | |
43 | echo "line 10" >> hello && | |
44 | add_and_commit_file hello "2 more lines" && | |
45 | HASH3=$(git rev-parse --verify HEAD) && | |
46 | echo "line 11" >> hello && | |
47 | add_and_commit_file hello "1 more line" && | |
48 | HASH4=$(git rev-parse --verify HEAD) && | |
49 | sed -e "s/BUG/5/" hello > hello.new && | |
50 | mv hello.new hello && | |
51 | add_and_commit_file hello "BUG fixed" && | |
52 | HASH5=$(git rev-parse --verify HEAD) && | |
53 | echo "line 12" >> hello && | |
54 | echo "line 13" >> hello && | |
55 | add_and_commit_file hello "2 more lines" && | |
56 | HASH6=$(git rev-parse --verify HEAD) | |
57 | echo "line 14" >> hello && | |
58 | echo "line 15" >> hello && | |
59 | echo "line 16" >> hello && | |
60 | add_and_commit_file hello "again 3 more lines" && | |
61 | HASH7=$(git rev-parse --verify HEAD) | |
62 | ' | |
63 | ||
64 | test_expect_success 'replace the author' ' | |
65 | git cat-file commit $HASH2 | grep "author A U Thor" && | |
66 | R=$(git cat-file commit $HASH2 | sed -e "s/A U/O/" | git hash-object -t commit --stdin -w) && | |
67 | git cat-file commit $R | grep "author O Thor" && | |
68 | git update-ref refs/replace/$HASH2 $R && | |
69 | git show HEAD~5 | grep "O Thor" && | |
70 | git show $HASH2 | grep "O Thor" | |
71 | ' | |
72 | ||
73 | # | |
74 | # | |
75 | test_done |