Merge branch 'sp/fetch-optim'
[gitweb.git] / t / t5520-pull.sh
index f841574573545fa333e00b6815ba0df7d6931273..9484129ca5aafab369a6ee1f7a1264d568f8cb44 100755 (executable)
@@ -17,7 +17,7 @@ test_expect_success setup '
 test_expect_success 'pulling into void' '
        mkdir cloned &&
        cd cloned &&
-       git init-db &&
+       git init &&
        git pull ..
 '
 
@@ -29,5 +29,67 @@ test_expect_success 'checking the results' '
        diff file cloned/file
 '
 
-test_done
+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