Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-17 Thread Junio C Hamano
John Keeping  writes:

>> Perhaps something like this is needed?
>>  ...
> Either that or "2>/dev/null" like in the original, yes.

Ah, that makes sense.  I see you already followed-up with a patch,
so I'll pick it up.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-17 Thread John Keeping
On Fri, Jan 17, 2014 at 10:57:56AM -0800, Junio C Hamano wrote:
> Jeff King  writes:
> 
> > On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:
> >
> >> With git-next, where git pull --rebase can print out "fatal: No such
> >> ref: ''" if git pull --rebase is run on branches without an upstream.
> >
> > This is already fixed in bb3f458 (rebase: fix fork-point with zero
> > arguments, 2014-01-09), I think.
> 
> Doesn't the call to get_remote_merge_branch in this part
> 
> test -n "$curr_branch" &&
> . git-parse-remote &&
> remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
> oldremoteref=$(git merge-base --fork-point "$remoteref" $curr_branch)
> 
> yield an empty string, feeding it to "merge-base --fork-point" as
> its first parameter?

For some reason I assumed that get_remote_merge_branch would either
yield a non-empty string or return failure, meaning that the &&-chain
makes everything OK.

Before the change to use "merge-base --fork-point", the code was:

oldremoteref="$(git rev-parse -q --verify "$remoteref")" &&
for reflog in $(git rev-list -g $remoteref 2>/dev/null)
do
if test "$reflog" = "$(git merge-base $reflog $curr_branch)"
then
oldremoteref="$reflog"
break
fi
done

which has a similar failure - rev-list requires a revision argument and
prints its usage if not given one.

> Perhaps something like this is needed?
> 
>  git-pull.sh | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/git-pull.sh b/git-pull.sh
> index 605e957..467c66c 100755
> --- a/git-pull.sh
> +++ b/git-pull.sh
> @@ -229,6 +229,7 @@ test true = "$rebase" && {
>   test -n "$curr_branch" &&
>   . git-parse-remote &&
>   remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
> + test -n "$remoteref" &&
>   oldremoteref=$(git merge-base --fork-point "$remoteref" $curr_branch)
>  }
>  orig_head=$(git rev-parse -q --verify HEAD)

Either that or "2>/dev/null" like in the original, yes.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-17 Thread Junio C Hamano
Jeff King  writes:

> On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:
>
>> With git-next, where git pull --rebase can print out "fatal: No such
>> ref: ''" if git pull --rebase is run on branches without an upstream.
>
> This is already fixed in bb3f458 (rebase: fix fork-point with zero
> arguments, 2014-01-09), I think.

Doesn't the call to get_remote_merge_branch in this part

test -n "$curr_branch" &&
. git-parse-remote &&
remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
oldremoteref=$(git merge-base --fork-point "$remoteref" $curr_branch)

yield an empty string, feeding it to "merge-base --fork-point" as
its first parameter?

Perhaps something like this is needed?

 git-pull.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/git-pull.sh b/git-pull.sh
index 605e957..467c66c 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -229,6 +229,7 @@ test true = "$rebase" && {
test -n "$curr_branch" &&
. git-parse-remote &&
remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
+   test -n "$remoteref" &&
oldremoteref=$(git merge-base --fork-point "$remoteref" $curr_branch)
 }
 orig_head=$(git rev-parse -q --verify HEAD)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-17 Thread Siddharth Agarwal

On 01/17/2014 12:40 AM, John Keeping wrote:

On Thu, Jan 16, 2014 at 06:47:38PM -0800, Siddharth Agarwal wrote:

On 01/16/2014 06:21 PM, Jeff King wrote:

On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:


With git-next, where git pull --rebase can print out "fatal: No such
ref: ''" if git pull --rebase is run on branches without an upstream.

This is already fixed in bb3f458 (rebase: fix fork-point with zero
arguments, 2014-01-09), I think.

If I'm reading the patch correctly, that only fixes it for git rebase,
not for git pull --rebase. git-pull.sh contains a separate invocation of
git merge-base --fork-point.

I'm pretty sure the invocation in git-pull.sh is OK.  The error then
comes out of git-rebase.sh when git-pull invokes it.


That doesn't square with 48059e4 being the culprit commit.


Are you running a version of git-next that includes bb3f458?


Yes, I am.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-17 Thread John Keeping
On Thu, Jan 16, 2014 at 06:47:38PM -0800, Siddharth Agarwal wrote:
> On 01/16/2014 06:21 PM, Jeff King wrote:
> > On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:
> >
> >> With git-next, where git pull --rebase can print out "fatal: No such
> >> ref: ''" if git pull --rebase is run on branches without an upstream.
> > This is already fixed in bb3f458 (rebase: fix fork-point with zero
> > arguments, 2014-01-09), I think.
> 
> If I'm reading the patch correctly, that only fixes it for git rebase, 
> not for git pull --rebase. git-pull.sh contains a separate invocation of 
> git merge-base --fork-point.

I'm pretty sure the invocation in git-pull.sh is OK.  The error then
comes out of git-rebase.sh when git-pull invokes it.

Are you running a version of git-next that includes bb3f458?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-16 Thread Siddharth Agarwal

On 01/16/2014 06:21 PM, Jeff King wrote:

On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:


With git-next, where git pull --rebase can print out "fatal: No such
ref: ''" if git pull --rebase is run on branches without an upstream.

This is already fixed in bb3f458 (rebase: fix fork-point with zero
arguments, 2014-01-09), I think.


If I'm reading the patch correctly, that only fixes it for git rebase, 
not for git pull --rebase. git-pull.sh contains a separate invocation of 
git merge-base --fork-point.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-16 Thread Jeff King
On Thu, Jan 16, 2014 at 05:08:14PM -0800, Siddharth Agarwal wrote:

> With git-next, where git pull --rebase can print out "fatal: No such
> ref: ''" if git pull --rebase is run on branches without an upstream.

This is already fixed in bb3f458 (rebase: fix fork-point with zero
arguments, 2014-01-09), I think.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


with git-next, git pull --rebase can print out "fatal: No such ref: ''" for branches without an upstream

2014-01-16 Thread Siddharth Agarwal
With git-next, where git pull --rebase can print out "fatal: No such 
ref: ''" if git pull --rebase is run on branches without an upstream.


With git at b139ac2589b15d55cd9fa5c6957da44b150d0737, the following 
commands demonstrate the problem:


git init repo1
cd repo1
touch a; git add a; git commit -m "a"
cd ..
git clone repo1 repo2
cd repo2
git config remote.origin.fetch refs/heads/master:refs/remotes/origin/master
git checkout -b test
git pull --rebase

This results in the following output:

fatal: No such ref: ''
Current branch test is up to date.

So the pull --rebase looks like it works, but it prints out a spurious 
fatal error.


I've managed to bisect this down to 
https://github.com/gitster/git/commit/48059e405028ebf8a09c5a9aede89dfb460cce98. 
Looks like get_remote_merge_branch is called without arguments, and it 
returns an empty string. This string is passed as-is to git merge-base, 
which causes the error.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html