Code

push: fix segfault for odd config
[git.git] / t / t5520-pull.sh
1 #!/bin/sh
3 test_description='pulling into void'
5 . ./test-lib.sh
7 D=`pwd`
9 test_expect_success setup '
11         echo file >file &&
12         git add file &&
13         git commit -a -m original
15 '
17 test_expect_success 'pulling into void' '
18         mkdir cloned &&
19         cd cloned &&
20         git init &&
21         git pull ..
22 '
24 cd "$D"
26 test_expect_success 'checking the results' '
27         test -f file &&
28         test -f cloned/file &&
29         diff file cloned/file
30 '
32 test_expect_success 'pulling into void using master:master' '
33         mkdir cloned-uho &&
34         (
35                 cd cloned-uho &&
36                 git init &&
37                 git pull .. master:master
38         ) &&
39         test -f file &&
40         test -f cloned-uho/file &&
41         test_cmp file cloned-uho/file
42 '
44 test_expect_success 'test . as a remote' '
46         git branch copy master &&
47         git config branch.copy.remote . &&
48         git config branch.copy.merge refs/heads/master &&
49         echo updated >file &&
50         git commit -a -m updated &&
51         git checkout copy &&
52         test `cat file` = file &&
53         git pull &&
54         test `cat file` = updated
55 '
57 test_expect_success 'the default remote . should not break explicit pull' '
58         git checkout -b second master^ &&
59         echo modified >file &&
60         git commit -a -m modified &&
61         git checkout copy &&
62         git reset --hard HEAD^ &&
63         test `cat file` = file &&
64         git pull . second &&
65         test `cat file` = modified
66 '
68 test_expect_success '--rebase' '
69         git branch to-rebase &&
70         echo modified again > file &&
71         git commit -m file file &&
72         git checkout to-rebase &&
73         echo new > file2 &&
74         git add file2 &&
75         git commit -m "new file" &&
76         git tag before-rebase &&
77         git pull --rebase . copy &&
78         test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
79         test new = $(git show HEAD:file2)
80 '
82 test_expect_success 'branch.to-rebase.rebase' '
83         git reset --hard before-rebase &&
84         git config branch.to-rebase.rebase 1 &&
85         git pull . copy &&
86         git config branch.to-rebase.rebase 0 &&
87         test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
88         test new = $(git show HEAD:file2)
89 '
91 test_expect_success '--rebase with rebased upstream' '
93         git remote add -f me . &&
94         git checkout copy &&
95         git reset --hard HEAD^ &&
96         echo conflicting modification > file &&
97         git commit -m conflict file &&
98         git checkout to-rebase &&
99         echo file > file2 &&
100         git commit -m to-rebase file2 &&
101         git pull --rebase me copy &&
102         test "conflicting modification" = "$(cat file)" &&
103         test file = $(cat file2)
107 test_expect_success 'pull --rebase dies early with dirty working directory' '
109         git update-ref refs/remotes/me/copy copy^ &&
110         COPY=$(git rev-parse --verify me/copy) &&
111         git rebase --onto $COPY copy &&
112         git config branch.to-rebase.remote me &&
113         git config branch.to-rebase.merge refs/heads/copy &&
114         git config branch.to-rebase.rebase true &&
115         echo dirty >> file &&
116         git add file &&
117         test_must_fail git pull &&
118         test $COPY = $(git rev-parse --verify me/copy) &&
119         git checkout HEAD -- file &&
120         git pull &&
121         test $COPY != $(git rev-parse --verify me/copy)
125 test_done