Re: [PATCH] Use reflog in 'pull --rebase . foo'
- From
- Santi Béjar <santi@agolina.net>
- Date
- Nov 13, 2010, 17:20 UTC
- Message-ID
- <AANLkTikmJVj9BM=K2oSYJvPV27Uzn_9SQhsLc9EQm8zQ@mail.gmail.com>
- In-Reply-To
- <AANLkTiniwpk7ao=M4=5vuahczk6FscQYJE1rZx=wuBk_@mail.gmail.com>
On Sat, Nov 13, 2010 at 1:09 PM, Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> wrote:
Show 17 quoted lines
> 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.
Show 33 quoted lines
> @@ -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_doneFor the rest I think they are OK, and make sense.
HTH, Santi