[U-Boot] Syncing custodian tree (the new way) - What am I doing wrong?

Albert ARIBAUD albert.u.boot at aribaud.net
Tue Oct 25 18:20:07 CEST 2011


Le 25/10/2011 13:32, Graeme Russ a écrit :
> Hi Albert,
>
> On 25/10/11 22:05, Albert ARIBAUD wrote:
>> Le 25/10/2011 09:53, Wolfgang Denk a écrit :
>>> Dear Graeme Russ,
>>>
>>> In message<4EA66869.7000106 at gmail.com>   you wrote:
>>>>
>>>> I'm trying to figure out what I'm doing wrong trying to sync my local x86
>>>> repo as per the 'new' instructions on the wiki. This is what I get:
>>>
>>> I did not write (and actually not even read yet) these new
>>> instructions, so I cannot comment on this.
>>>
>>>> graeme at helios:~/Source/U-Boot/x86$ git rebase ${upstream}/master
>>>> fatal: Needed a single revision
>>>> invalid upstream u-boot/master
>>>
>>> Albert?
>>
>> (answering from my non-U-boot address)
>>
>> I did write the changes, and I think I did post an announcement on the
>> U-Boot list about it.
>>
>> Re: Greame's problem:
>>
>> I should have made it clear that '${upstream}' is just a way to represent
>> the upstream tree, either u-boot or u-boot-arm. The actual command for x86
>> should thus be
>>
>>      git rebase u-boot/master
>
> I was already clear on that - I had set upstream=u-boot - Note the error
> message:

Sorry, from my non-U-Boot e-mail address I only had what Wolfgang quoted.

> fatal: Needed a single revision
> invalid upstream u-boot/master
>                   ^^^^^^
> I think the problem is at:
>
> git fetch git://git.denx.de/${upstream}.git
>
> Where are we actually pulling the upstream tree into?

We are not pulling -- that's the point. We are fetching, i.e. we are 
importing all commits in the upstream remote and all its local branches 
will appear as remote branches to us.

> No my repo is at ~/Source/U-Boot/x86/ and I have uboot and master branches
> there (as per previous wiki instructions) so I tried:
>
> git checkout uboot

That one (and actually the uboot branch itself) is unneeded.

> git fetch git://git.denx.de/${upstream}.git
> git checkout master
> git rebase ${upstream}/master
>
> But that is not right - I would normally rebase to uboot

No, you would not; you would rebase to your upstream's master.

The old instructions introduced a local branch called uboot which only 
served as a proxy for ${upstream}/master by regularly merging it (and 
these merges were actually always fast-forwards). So doing a rebase onto 
uboot is exactly the same as onto ${upstream}/master.

> I think there is a missing link here somewhere

I should have made my rationale clear when posting my update message on 
the list, sorry.

As I just said, uboot was just a placeholder for ${upstream}/master, and 
the old instructions kept it in sync through git merge although these 
merges were always fast-forwards by nature. What I did was remove uboot 
and use ${upstream}/master, and thus replace the pull into uboot by a 
simple fetch of ${upstream} directly, the net benefit being that there 
is now no git merge involved, hence zero risk of undue merges -- and 
I've seen such undue merges in the few last release cycles.

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list