threads / discuss / 31923

[PATCHv2] git-pull: Avoid merge-base on detached head

Subject: [PATCHv2] git-pull: Avoid merge-base on detached head

## tl;dr

5 messages between Oct 23, 2012 and Oct 26, 2012.

replies: 4people: 2as markdown or json

Phil Hord· Oct 23, 2012, 20:39 UTC · re: Phil Hord · lore

git pull --rebase does some clever tricks to find the base for $upstream , but it forgets that we may not have any branch at all. When this happens, git merge-base reports its "usage" help in the middle of an otherwise successful rebase operation, because git-merge is called with one too few parameters.

Since we do not need the merge-base trick in the case of a detached HEAD, detect this condition and bypass the clever trick and the usage noise.

Signed-off-by: Phil Hord <hordp@cisco.com>
---
 git-pull.sh | 1 +
 1 file changed, 1 insertion(+)
diff --git a/git-pull.sh b/git-pull.sh
index 2a10047..266e682 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -200,6 +200,7 @@ test true = "$rebase" && {
 		require_clean_work_tree "pull with rebase" "Please commit or stash them."
 	fi
 	oldremoteref= &&
+	test -n "$curr_branch" &&
 	. git-parse-remote &&
 	remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
 	oldremoteref="$(git rev-parse -q --verify "$remoteref")" &&
-- 
1.8.0.2.gc921d59.dirty
Jeff King· Oct 25, 2012, 09:34 UTC · re: Phil Hord · lore

Re: [PATCHv2] git-pull: Avoid merge-base on detached head

On Tue, Oct 23, 2012 at 04:39:56PM -0400, Phil Hord wrote:
Show 10 quoted lines
> git pull --rebase does some clever tricks to find the base
> for $upstream , but it forgets that we may not have any
> branch at all.  When this happens, git merge-base reports its
> "usage" help in the middle of an otherwise successful
> rebase operation, because git-merge is called with one too
> few parameters.
> 
> Since we do not need the merge-base trick in the case of a
> detached HEAD, detect this condition and bypass the clever
> trick and the usage noise.

Makes sense. I notice there is no test with your patch. It sounds from the description like the operation still may succeed, but we just get cruft on stderr?

-Peff
Phil Hord· Oct 25, 2012, 18:50 UTC · re: Jeff King · lore

Re: [PATCHv2] git-pull: Avoid merge-base on detached head

Jeff King wrote:
Show 16 quoted lines
> On Tue, Oct 23, 2012 at 04:39:56PM -0400, Phil Hord wrote:
>
>> git pull --rebase does some clever tricks to find the base
>> for $upstream , but it forgets that we may not have any
>> branch at all.  When this happens, git merge-base reports its
>> "usage" help in the middle of an otherwise successful
>> rebase operation, because git-merge is called with one too
>> few parameters.
>>
>> Since we do not need the merge-base trick in the case of a
>> detached HEAD, detect this condition and bypass the clever
>> trick and the usage noise.
> Makes sense. I notice there is no test with your patch. It sounds from
> the description like the operation still may succeed, but we just get
> cruft on stderr?
>
Yes, that's correct.
P
Jeff King· Oct 26, 2012, 12:48 UTC · re: Phil Hord · lore

Re: [PATCHv2] git-pull: Avoid merge-base on detached head

On Thu, Oct 25, 2012 at 02:50:37PM -0400, Phil Hord wrote:
Show 16 quoted lines
> >> git pull --rebase does some clever tricks to find the base
> >> for $upstream , but it forgets that we may not have any
> >> branch at all.  When this happens, git merge-base reports its
> >> "usage" help in the middle of an otherwise successful
> >> rebase operation, because git-merge is called with one too
> >> few parameters.
> >>
> >> Since we do not need the merge-base trick in the case of a
> >> detached HEAD, detect this condition and bypass the clever
> >> trick and the usage noise.
> > Makes sense. I notice there is no test with your patch. It sounds from
> > the description like the operation still may succeed, but we just get
> > cruft on stderr?
> >
> 
> Yes, that's correct.

OK. I'd rather not worry about a test then, as it would necessarily be flaky with respect to what git-pull might generate on its stderr. I've queued your patch in 'next'.

Thanks.
-Peff

← back to recent threads