8ee5d73137
Some confusing tutorials suggested that it would be a good idea to fetch into the current branch with something like this: git fetch origin master:master (or even worse: the same command line with "pull" instead of "fetch"). While it might make sense to store what you want to pull, it typically is plain wrong when the current branch is "master". This should only be allowed when (an incorrect) "git pull origin master:master" tries to work around by giving --update-head-ok to underlying "git fetch", and otherwise we should refuse it, but somewhere along the lines we lost that behavior. The check for the current branch is now _only_ performed in non-bare repositories, which is an improvement from the original behaviour. Some newer tests were depending on the broken behaviour of "git fetch" this patch fixes, and have been adjusted. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Acked-by: Shawn O. Pearce <spearce@spearce.org> Acked-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
43 lines
610 B
Bash
Executable File
43 lines
610 B
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='forced push to replace commit we do not have'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
|
|
>file1 && git add file1 && test_tick &&
|
|
git commit -m Initial &&
|
|
|
|
mkdir another && (
|
|
cd another &&
|
|
git init &&
|
|
git fetch --update-head-ok .. master:master
|
|
) &&
|
|
|
|
>file2 && git add file2 && test_tick &&
|
|
git commit -m Second
|
|
|
|
'
|
|
|
|
test_expect_success 'non forced push should die not segfault' '
|
|
|
|
(
|
|
cd another &&
|
|
git push .. master:master
|
|
test $? = 1
|
|
)
|
|
|
|
'
|
|
|
|
test_expect_success 'forced push should succeed' '
|
|
|
|
(
|
|
cd another &&
|
|
git push .. +master:master
|
|
)
|
|
|
|
'
|
|
|
|
test_done
|