git-show: do not segfault when showing a bad tag
[git/platforms.git] / t / t5520-pull.sh
blob725771fac167ea5aac8cf65b916c96918b0f5e0d
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
17 test_expect_success 'pulling into void' '
18 mkdir cloned &&
19 cd cloned &&
20 git init &&
21 git pull ..
24 cd "$D"
26 test_expect_success 'checking the results' '
27 test -f file &&
28 test -f cloned/file &&
29 diff file cloned/file
32 test_expect_success 'pulling into void using master:master' '
33 mkdir cloned-uho &&
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
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
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
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)
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)
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