Code

Merge git://git.kernel.org/pub/scm/gitk/gitk
[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 'test . as a remote' '
34         git branch copy master &&
35         git config branch.copy.remote . &&
36         git config branch.copy.merge refs/heads/master &&
37         echo updated >file &&
38         git commit -a -m updated &&
39         git checkout copy &&
40         test `cat file` = file &&
41         git pull &&
42         test `cat file` = updated
43 '
45 test_expect_success 'the default remote . should not break explicit pull' '
46         git checkout -b second master^ &&
47         echo modified >file &&
48         git commit -a -m modified &&
49         git checkout copy &&
50         git reset --hard HEAD^ &&
51         test `cat file` = file &&
52         git pull . second &&
53         test `cat file` = modified
54 '
56 test_expect_success '--rebase' '
57         git branch to-rebase &&
58         echo modified again > file &&
59         git commit -m file file &&
60         git checkout to-rebase &&
61         echo new > file2 &&
62         git add file2 &&
63         git commit -m "new file" &&
64         git tag before-rebase &&
65         git pull --rebase . copy &&
66         test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
67         test new = $(git show HEAD:file2)
68 '
70 test_expect_success 'branch.to-rebase.rebase' '
71         git reset --hard before-rebase &&
72         git config branch.to-rebase.rebase 1 &&
73         git pull . copy &&
74         git config branch.to-rebase.rebase 0 &&
75         test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
76         test new = $(git show HEAD:file2)
77 '
79 test_expect_success '--rebase with rebased upstream' '
81         git remote add -f me . &&
82         git checkout copy &&
83         git reset --hard HEAD^ &&
84         echo conflicting modification > file &&
85         git commit -m conflict file &&
86         git checkout to-rebase &&
87         echo file > file2 &&
88         git commit -m to-rebase file2 &&
89         git pull --rebase me copy &&
90         test "conflicting modification" = "$(cat file)" &&
91         test file = $(cat file2)
93 '
95 test_done