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

5 messages from 2012-10-23 to 2012-10-26. Participants: Phil Hord, Jeff King.
Thread: https://gitlist.dev/t/31923

## Phil Hord, 2012-10-23 20:39

Subject: [PATCHv2] git-pull: Avoid merge-base on detached head
Message-ID: <1351024796-28174-1-git-send-email-hordp@cisco.com>
URL: https://gitlist.dev/e/1351024796-28174-1-git-send-email-hordp%40cisco.com

```

Add Signed-off-by...

```

## Phil Hord, 2012-10-23 20:39

Subject: [PATCHv2] git-pull: Avoid merge-base on detached head
Message-ID: <1351024796-28174-2-git-send-email-hordp@cisco.com>
URL: https://gitlist.dev/e/1351024796-28174-2-git-send-email-hordp%40cisco.com
In-Reply-To: <1351024796-28174-1-git-send-email-hordp@cisco.com>

```
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, 2012-10-25 09:34

Subject: Re: [PATCHv2] git-pull: Avoid merge-base on detached head
Message-ID: <20121025093441.GH8390@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20121025093441.GH8390%40sigill.intra.peff.net
In-Reply-To: <1351024796-28174-2-git-send-email-hordp@cisco.com>

```
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?

-Peff

```

## Phil Hord, 2012-10-25 18:50

Subject: Re: [PATCHv2] git-pull: Avoid merge-base on detached head
Message-ID: <508989FD.7090101@cisco.com>
URL: https://gitlist.dev/e/508989FD.7090101%40cisco.com
In-Reply-To: <20121025093441.GH8390@sigill.intra.peff.net>

```
Jeff King wrote:
> 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, 2012-10-26 12:48

Subject: Re: [PATCHv2] git-pull: Avoid merge-base on detached head
Message-ID: <20121026124810.GC1455@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20121026124810.GC1455%40sigill.intra.peff.net
In-Reply-To: <508989FD.7090101@cisco.com>

```
On Thu, Oct 25, 2012 at 02:50:37PM -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.

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

```
