Use reflog in 'pull --rebase . foo'
authorMartin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Sat, 13 Nov 2010 22:58:22 +0000 (23:58 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Nov 2010 23:06:40 +0000 (15:06 -0800)
Since c85c792 (pull --rebase: be cleverer with rebased upstream
branches, 2008-01-26), "git pull --rebase" has used the reflog to try to
rebase from the old upstream onto the new upstream.

Make this work if the local repository is explicitly passed on the
command line as in 'git pull --rebase . foo'.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Acked-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-parse-remote.sh
t/t5520-pull.sh

index 5f47b18141a0758c3d0dae2cfe764495c92139c5..375a0ba59e1e2491ddcd0f8970699b1f11981565 100644 (file)
@@ -89,7 +89,13 @@ get_remote_merge_branch () {
            refs/heads/*) remote=${remote#refs/heads/} ;;
            refs/* | tags/* | remotes/* ) remote=
            esac
-
-           [ -n "$remote" ] && echo "refs/remotes/$repo/$remote"
+           [ -n "$remote" ] && case "$repo" in
+               .)
+                   echo "refs/heads/$remote"
+                   ;;
+               *)
+                   echo "refs/remotes/$repo/$remote"
+                   ;;
+           esac
        esac
 }
index 0b489f5b1227268c050c1256d105d57d871f5698..0470a81be0edaf883788d313778ef6865ed34c6f 100755 (executable)
@@ -222,4 +222,11 @@ test_expect_success 'git pull --rebase does not reapply old patches' '
        )
 '
 
+test_expect_success 'git pull --rebase against local branch' '
+       git checkout -b copy2 to-rebase-orig &&
+       git pull --rebase . to-rebase &&
+       test "conflicting modification" = "$(cat file)" &&
+       test file = "$(cat file2)"
+'
+
 test_done