threads / patch / 19702

patch, 3 partspull --rebase: Add support for rebased default upstream

Subject: [PATCH 2/3] pull --rebase: Add support for rebased default upstream

## tl;dr

3 messages between Jun 5, 2009 and Jun 6, 2009. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Santi Béjar· Jun 5, 2009, 19:53 UTC · lore

Also add a test to check for this case and another one (failing) to test rebasing two branches on top of a rebased upstream using just 'git pull --rebase'.

Signed-off-by: Santi Béjar <santi@agolina.net>
---
 git-parse-remote.sh |    8 +++++++-
 t/t5520-pull.sh     |   29 +++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletions(-)
Show changes to 2 files +36 −1

git-parse-remote.sh, t/t5520-pull.sh

diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index 8b3ba72..5df5689 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -232,7 +232,13 @@ get_remote_refs_for_fetch () {
 get_remote_merge_branch () {
 	case "$#" in
 	0|1)
-	    die "internal error: get-remote-merge-branch." ;;
+	    origin="$1"
+	    default=$(get_default_remote)
+	    test -z "$origin" && origin=$default
+	    curr_branch=$(git symbolic-ref -q HEAD)
+	    [ "$origin" = "$default" ] &&
+	    echo $(git for-each-ref --format='%(upstream)' $curr_branch)
+	    ;;
 	*)
 	    repo=$1
 	    shift
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index 725771f..359a3e2 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -92,20 +92,49 @@ test_expect_success '--rebase with rebased upstream' '
 
 	git remote add -f me . &&
 	git checkout copy &&
+	git tag copy-orig &&
 	git reset --hard HEAD^ &&
 	echo conflicting modification > file &&
 	git commit -m conflict file &&
 	git checkout to-rebase &&
 	echo file > file2 &&
 	git commit -m to-rebase file2 &&
+	git tag to-rebase-orig &&
 	git pull --rebase me copy &&
 	test "conflicting modification" = "$(cat file)" &&
 	test file = $(cat file2)
 
 '
 
+test_expect_success '--rebase with rebased default upstream' '
+
+	git update-ref refs/remotes/me/copy copy-orig &&
+	git checkout --track -b to-rebase2 me/copy &&
+	git reset --hard to-rebase-orig &&
+	git pull --rebase &&
+	test "conflicting modification" = "$(cat file)" &&
+	test file = $(cat file2)
+
+'
+
+test_expect_failure '--rebase with rebased upstream and two branches' '
+
+	git update-ref refs/remotes/me/copy copy-orig &&
+	git reset --hard to-rebase-orig &&
+	git checkout --track -b to-rebase3 me/copy &&
+	git reset --hard to-rebase-orig &&
+	git pull --rebase &&
+	test "conflicting modification" = "$(cat file)" &&
+	test file = $(cat file2) &&
+	git checkout to-rebase2 &&
+	git pull --rebase me copy
+
+'
+
 test_expect_success 'pull --rebase dies early with dirty working directory' '
 
+	git rebase --abort &&
+	git checkout to-rebase &&
 	git update-ref refs/remotes/me/copy copy^ &&
 	COPY=$(git rev-parse --verify me/copy) &&
 	git rebase --onto $COPY copy &&
-- 
1.6.3.1.308.g426b5
Johannes Schindelin· Jun 5, 2009, 23:22 UTC · re: Santi Béjar · lore

Re: [PATCH 2/3] pull --rebase: Add support for rebased default upstream

Hi,
On Fri, 5 Jun 2009, Santi Béjar wrote:
Show 5 quoted lines
> Also add a test to check for this case and another one (failing) to
> test rebasing two branches on top of a rebased upstream using just
> 'git pull --rebase'.
> 
> Signed-off-by: Santi Béjar <santi@agolina.net>

Either I am a stupid moron (which is a completely valid suggestion) or this commit message lacks in detail severely.

For example, when I "git pull --rebase junio next" and "next" was rebased, it works _perfectly_, so I do not see any need for a fix.

Further, this:
> ---
>  git-parse-remote.sh |    8 +++++++-
>  t/t5520-pull.sh     |   29 +++++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+), 1 deletions(-)

... suggests to me that pull --rebase is not even affected by your patch. So maybe you want to clarify so much that even stupid morons understand what you want to achieve, and how.

Ciao, Dscho

Santi Béjar· Jun 6, 2009, 08:00 UTC · re: Johannes Schindelin · lore

Re: [PATCH 2/3] pull --rebase: Add support for rebased default upstream

2009/6/6 Johannes Schindelin <Johannes.Schindelin@gmx.de>:
Show 15 quoted lines
> Hi,
>
> On Fri, 5 Jun 2009, Santi Béjar wrote:
>
>> Also add a test to check for this case and another one (failing) to
>> test rebasing two branches on top of a rebased upstream using just
>> 'git pull --rebase'.
>>
>> Signed-off-by: Santi Béjar <santi@agolina.net>
>
> Either I am a stupid moron (which is a completely valid suggestion) or
> this commit message lacks in detail severely.
>
> For example, when I "git pull --rebase junio next" and "next" was rebased,
> it works _perfectly_, so I do not see any need for a fix.
It is for the default upstream (with no arguments), so before this patch:
git pull --rebase
did not work with a rebased upstream.

But you are right, the commit message can be improved a lot. I've redone this patch series so much that at the end the commit message lack details.

Show 9 quoted lines
>
> Further, this:
>
>> ---
>>  git-parse-remote.sh |    8 +++++++-
>>  t/t5520-pull.sh     |   29 +++++++++++++++++++++++++++++
>>  2 files changed, 36 insertions(+), 1 deletions(-)
>
> ... suggests to me that pull --rebase is not even affected by your patch.
It modifies a function used in git pull --rebase.
> So maybe you want to clarify so much that even stupid morons understand
> what you want to achieve, and how.
OK, I'll try.
parse-remote: support default reflist in get_remote_merge_branch

Expand get_remote_merge_branch to compute the tracking branch to merge when called without arguments (or only the remote name). This allows "git pull --rebase" without arguments (default upstream branch) to work with a rebased upstream.

Santi

← back to recent threads