Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
commit
1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions
86
t/t5536-fetch-conflicts.sh
Executable file
86
t/t5536-fetch-conflicts.sh
Executable file
|
|
@ -0,0 +1,86 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='fetch handles conflicting refspecs correctly'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
D=$(pwd)
|
||||
|
||||
setup_repository () {
|
||||
git init "$1" && (
|
||||
cd "$1" &&
|
||||
git config remote.origin.url "$D" &&
|
||||
shift &&
|
||||
for refspec in "$@"
|
||||
do
|
||||
git config --add remote.origin.fetch "$refspec"
|
||||
done
|
||||
)
|
||||
}
|
||||
|
||||
test_expect_success 'setup' '
|
||||
git commit --allow-empty -m "Initial" &&
|
||||
git branch branch1 &&
|
||||
git tag tag1 &&
|
||||
git commit --allow-empty -m "First" &&
|
||||
git branch branch2 &&
|
||||
git tag tag2
|
||||
'
|
||||
|
||||
test_expect_success 'fetch with no conflict' '
|
||||
setup_repository ok "+refs/heads/*:refs/remotes/origin/*" && (
|
||||
cd ok &&
|
||||
git fetch origin
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'fetch conflict: config vs. config' '
|
||||
setup_repository ccc \
|
||||
"+refs/heads/branch1:refs/remotes/origin/branch1" \
|
||||
"+refs/heads/branch2:refs/remotes/origin/branch1" && (
|
||||
cd ccc &&
|
||||
test_must_fail git fetch origin 2>error &&
|
||||
test_i18ngrep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'fetch duplicate: config vs. config' '
|
||||
setup_repository dcc \
|
||||
"+refs/heads/*:refs/remotes/origin/*" \
|
||||
"+refs/heads/branch1:refs/remotes/origin/branch1" && (
|
||||
cd dcc &&
|
||||
git fetch origin
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'fetch conflict: arg overrides config' '
|
||||
setup_repository aoc \
|
||||
"+refs/heads/*:refs/remotes/origin/*" && (
|
||||
cd aoc &&
|
||||
git fetch origin refs/heads/branch2:refs/remotes/origin/branch1
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'fetch conflict: arg vs. arg' '
|
||||
setup_repository caa && (
|
||||
cd caa &&
|
||||
test_must_fail git fetch origin \
|
||||
refs/heads/*:refs/remotes/origin/* \
|
||||
refs/heads/branch2:refs/remotes/origin/branch1 2>error &&
|
||||
test_i18ngrep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'fetch conflict: criss-cross args' '
|
||||
setup_repository xaa \
|
||||
"+refs/heads/*:refs/remotes/origin/*" && (
|
||||
cd xaa &&
|
||||
git fetch origin \
|
||||
refs/heads/branch1:refs/remotes/origin/branch2 \
|
||||
refs/heads/branch2:refs/remotes/origin/branch1 2>error &&
|
||||
test_i18ngrep "warning: refs/remotes/origin/branch1 usually tracks refs/heads/branch1, not refs/heads/branch2" error &&
|
||||
test_i18ngrep "warning: refs/remotes/origin/branch2 usually tracks refs/heads/branch2, not refs/heads/branch1" error
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
Loading…
Add table
Add a link
Reference in a new issue