Re: [PATCH] Use reflog in 'pull --rebase . foo'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Nov 13, 2010 at 1:09 PM, Martin von Zweigbergk
<martin.von.zweigbergk@xxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]