#!/bin/sh test_description='pull options' . ./test-lib.sh test_expect_success 'setup' ' mkdir parent && (cd parent && git init && echo one >file && git add file && git commit -m one) ' test_expect_success 'git pull -q' ' mkdir clonedq && (cd clonedq && git init && git pull -q "../parent" >out 2>err && test_must_be_empty err && test_must_be_empty out) ' test_expect_success 'git pull -q --rebase' ' mkdir clonedqrb && (cd clonedqrb && git init && git pull -q --rebase "../parent" >out 2>err && test_must_be_empty err && test_must_be_empty out && git pull -q --rebase "../parent" >out 2>err && test_must_be_empty err && test_must_be_empty out) ' test_expect_success 'git pull' ' mkdir cloned && (cd cloned && git init && git pull "../parent" >out 2>err && test -s err && test_must_be_empty out) ' test_expect_success 'git pull --rebase' ' mkdir clonedrb && (cd clonedrb && git init && git pull --rebase "../parent" >out 2>err && test -s err && test_must_be_empty out) ' test_expect_success 'git pull -v' ' mkdir clonedv && (cd clonedv && git init && git pull -v "../parent" >out 2>err && test -s err && test_must_be_empty out) ' test_expect_success 'git pull -v --rebase' ' mkdir clonedvrb && (cd clonedvrb && git init && git pull -v --rebase "../parent" >out 2>err && test -s err && test_must_be_empty out) ' test_expect_success 'git pull -v -q' ' mkdir clonedvq && (cd clonedvq && git init && git pull -v -q "../parent" >out 2>err && test_must_be_empty out && test_must_be_empty err) ' test_expect_success 'git pull -q -v' ' mkdir clonedqv && (cd clonedqv && git init && git pull -q -v "../parent" >out 2>err && test_must_be_empty out && test -s err) ' test_expect_success 'git pull --force' ' mkdir clonedoldstyle && (cd clonedoldstyle && git init && cat >>.git/config <<-\EOF && [remote "one"] url = ../parent fetch = refs/heads/master:refs/heads/mirror [remote "two"] url = ../parent fetch = refs/heads/master:refs/heads/origin [branch "master"] remote = two merge = refs/heads/master EOF git pull two && test_commit A && git branch -f origin && git pull --all --force ) ' test_expect_success 'git pull --all' ' mkdir clonedmulti && (cd clonedmulti && git init && cat >>.git/config <<-\EOF && [remote "one"] url = ../parent fetch = refs/heads/*:refs/remotes/one/* [remote "two"] url = ../parent fetch = refs/heads/*:refs/remotes/two/* [branch "master"] remote = one merge = refs/heads/master EOF git pull --all ) ' test_expect_success 'git pull --dry-run' ' test_when_finished "rm -rf clonedry" && git init clonedry && ( cd clonedry && git pull --dry-run ../parent && test_path_is_missing .git/FETCH_HEAD && test_path_is_missing .git/refs/heads/master && test_path_is_missing .git/index && test_path_is_missing file ) ' test_expect_success 'git pull --all --dry-run' ' test_when_finished "rm -rf cloneddry" && git init clonedry && ( cd clonedry && git remote add origin ../parent && git pull --all --dry-run && test_path_is_missing .git/FETCH_HEAD && test_path_is_missing .git/refs/remotes/origin/master && test_path_is_missing .git/index && test_path_is_missing file ) ' test_expect_success 'git pull --allow-unrelated-histories' ' test_when_finished "rm -fr src dst" && git init src && ( cd src && test_commit one && test_commit two ) && git clone src dst && ( cd src && git checkout --orphan side HEAD^ && test_commit three ) && ( cd dst && test_must_fail git pull ../src side && git pull --allow-unrelated-histories ../src side ) ' test_done