[PATCH] pull: allow "git pull origin $something:$current_branch" into an unborn branch
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 14, 2008, 22:53 UTC
- Message-ID
- <7vmyh66b5z.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <7vk5ca7rw3.fsf@gitster.siamese.dyndns.org>
Some misguided documents floating on the Net suggests this sequence:
mkdir newdir && cd newdir
git init
git remote add origin $url
git pull origin master:master"git pull" has known about an misguided "pull" like this where the underlying fetch updates the current branch for a long time, and it also has known about another form of insanity "git pull origin master" into an unborn branch, but these two workarounds 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 comes on top of js/maint-fetch-update-head. Passes all the tests, and also its own.
git-pull.sh | 4 ++-- t/t5520-pull.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/git-pull.sh b/git-pull.sh index 75c3610..664fe34 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -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 diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh index 997b2db..725771f 100755 --- a/t/t5520-pull.sh +++ b/t/t5520-pull.sh @@ -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 &&
-- 1.6.0.2.711.gf1ba4