From: Santi Béjar Date: Sat, 13 Nov 2010 17:20:47 GMT Subject: Re: [PATCH] Use reflog in 'pull --rebase . foo' Message-ID: In-Reply-To: On Sat, Nov 13, 2010 at 1:09 PM, Martin von Zweigbergk wrote: > diff --git a/git-parse-remote.sh b/git-parse-remote.sh > index 5f47b18..2e1661d 100644 > --- a/git-parse-remote.sh > +++ b/git-parse-remote.sh > @@ -63,11 +63,8 @@ get_default_remote () { >  get_remote_merge_branch () { >        case "$#" in >        0|1) > -           origin="$1" > -           default=$(get_default_remote) > -           test -z "$origin" && origin=$default >            curr_branch=$(git symbolic-ref -q HEAD) > -           [ "$origin" = "$default" ] && > +           test -z "$1" || test "$1" = $(get_default_remote) && >            echo $(git for-each-ref --format='%(upstream)' $curr_branch) >            ;; >        *) They are not equivalent, the last line (echo $(git for-each-ref...)) is always executed, not only when ask for the default remote. When $origin != $default the last line does not return the correct answer. It should return nothing, it is not well defined. Or maybe it should return the branch pointed by $origin/HEAD (I cannot test right now what 'git pull $remote-not-the-default' merges). And it has nothing to do with letting 'pull --rebase . for" work. > @@ -89,7 +86,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 >  } > diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh > index 0b489f5..0470a81 100755 > --- a/t/t5520-pull.sh > +++ b/t/t5520-pull.sh > @@ -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 For the rest I think they are OK, and make sense. HTH, Santi