| #!/bin/sh |
| |
| test_description='pulling into void' |
| |
| . ./test-lib.sh |
| |
| D=`pwd` |
| |
| test_expect_success setup ' |
| |
| echo file >file && |
| git add file && |
| git commit -a -m original |
| |
| ' |
| |
| test_expect_success 'pulling into void' ' |
| mkdir cloned && |
| cd cloned && |
| git init && |
| git pull .. |
| ' |
| |
| cd "$D" |
| |
| test_expect_success 'checking the results' ' |
| test -f file && |
| test -f cloned/file && |
| diff file cloned/file |
| ' |
| |
| test_expect_success 'test . as a remote' ' |
| |
| git branch copy master && |
| git config branch.copy.remote . && |
| git config branch.copy.merge refs/heads/master && |
| echo updated >file && |
| git commit -a -m updated && |
| git checkout copy && |
| test `cat file` = file && |
| git pull && |
| test `cat file` = updated |
| ' |
| |
| test_expect_success 'the default remote . should not break explicit pull' ' |
| git checkout -b second master^ && |
| echo modified >file && |
| git commit -a -m modified && |
| git checkout copy && |
| git reset --hard HEAD^ && |
| test `cat file` = file && |
| git pull . second && |
| test `cat file` = modified |
| ' |
| |
| test_expect_success '--rebase' ' |
| git branch to-rebase && |
| echo modified again > file && |
| git commit -m file file && |
| git checkout to-rebase && |
| echo new > file2 && |
| git add file2 && |
| git commit -m "new file" && |
| git tag before-rebase && |
| git pull --rebase . copy && |
| test $(git rev-parse HEAD^) = $(git rev-parse copy) && |
| test new = $(git show HEAD:file2) |
| ' |
| |
| test_expect_success 'branch.to-rebase.rebase' ' |
| git reset --hard before-rebase && |
| git config branch.to-rebase.rebase 1 && |
| git pull . copy && |
| git config branch.to-rebase.rebase 0 && |
| test $(git rev-parse HEAD^) = $(git rev-parse copy) && |
| test new = $(git show HEAD:file2) |
| ' |
| |
| test_expect_success '--rebase with rebased upstream' ' |
| |
| git remote add -f me . && |
| git checkout copy && |
| git reset --hard HEAD^ && |
| echo conflicting modification > file && |
| git commit -m conflict file && |
| git checkout to-rebase && |
| echo file > file2 && |
| git commit -m to-rebase file2 && |
| git pull --rebase me copy && |
| test "conflicting modification" = "$(cat file)" && |
| test file = $(cat file2) |
| |
| ' |
| |
| test_done |