mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
pull: allow "git pull origin $something:$current_branch" into an unborn branch
Some misguided documents floating on the Net suggest this sequence: mkdir newdir && cd newdir git init git remote add origin $url git pull origin master:master "git pull" has known about misguided "pull" that lets the underlying fetch update the current branch for a long time. It also has known about "git pull origin master" into a branch yet to be born. These two workarounds however were not aware of the existence of each other and did not work well together. This fixes it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8ee5d73137
commit
b0ad11ea16
@ -124,7 +124,7 @@ orig_head=$(git rev-parse --verify HEAD 2>/dev/null)
|
||||
git fetch --update-head-ok "$@" || exit 1
|
||||
|
||||
curr_head=$(git rev-parse --verify HEAD 2>/dev/null)
|
||||
if test "$curr_head" != "$orig_head"
|
||||
if test -n "$orig_head" && test "$curr_head" != "$orig_head"
|
||||
then
|
||||
# The fetch involved updating the current branch.
|
||||
|
||||
@ -172,7 +172,7 @@ esac
|
||||
|
||||
if test -z "$orig_head"
|
||||
then
|
||||
git update-ref -m "initial pull" HEAD $merge_head "" &&
|
||||
git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
|
||||
git read-tree --reset -u HEAD || exit 1
|
||||
exit
|
||||
fi
|
||||
|
@ -29,6 +29,18 @@ test_expect_success 'checking the results' '
|
||||
diff file cloned/file
|
||||
'
|
||||
|
||||
test_expect_success 'pulling into void using master:master' '
|
||||
mkdir cloned-uho &&
|
||||
(
|
||||
cd cloned-uho &&
|
||||
git init &&
|
||||
git pull .. master:master
|
||||
) &&
|
||||
test -f file &&
|
||||
test -f cloned-uho/file &&
|
||||
test_cmp file cloned-uho/file
|
||||
'
|
||||
|
||||
test_expect_success 'test . as a remote' '
|
||||
|
||||
git branch copy master &&
|
||||
|
Loading…
Reference in New Issue
Block a user