[U-Boot] Attn Maintainers: git advise needed (how to fix messed up repo)

Graeme Russ graeme.russ at gmail.com
Tue Nov 29 06:04:12 CET 2011


Hi Mike,

On Tue, Nov 29, 2011 at 3:49 PM, Mike Frysinger <vapier at gentoo.org> wrote:
> On Monday 28 November 2011 23:17:47 Graeme Russ wrote:
>> My development is done using stacked git on development branches (I'm even
>> considering using an entirely independent local git repo 'just in case')
>
> that's fine.  it's just a matter of how often you want to publish patches to
> the wider world.  i publish all my bleeding edge stuff, but it's in a "next"
> style branch.
>
>> With respect to u-boot-x86 - I simply want to keep it up-to-date with
>> mainline and 'git am' patches I've saved from patchwork
>>
>> So how do I do this - Sorry, but I'm just not getting it - To me, it looks
>> like your assuming I want to stick to my existing (flawed) workflow. I
>> actually want to go back to square one and 'get it right'
>
> for the published branch, you'll have to have merge commits in it.  some
> people don't want any merge commits (keep everything linear), while others
> don't think really any are bad.  i'm kind of in between ... i don't mind
> merging of "good" branches.
>
> any ways, if you want to publish your local changes with Wolfgang's latest
> changes without having Wolfgang pull it first, then you'd do:
>        $ git checkout master
>        $ git fetch <upstream uri>
>        $ git merge u-boot/master
>        $ git push <x86 uri> master
> you shouldn't do this too often though otherwise you'll get a whole lot of
> merge commits cluttering up your history.  look at Wolfgang's tree starting
> around commit f9342e2c3e81d62.  that's fine for Wolfgang (since he's merging
> many trees), but imo, custodian trees shouldn't be gathering merge commits
> which are then sent to Wolfgang for merging.

Ah, now I get it - Perhaps the wiki should be changed (it has a rebase
instead of a merge). And I think this is where it all went pear-shaped for
me - I had been rebasing, but then I threw a merge into the mix

I think I need to do some reading up on 'rebase' versus 'merge' in git

So then the question becomes - what about developers doing x86 work - I
may have patches published in u-boot-x86/master which have not been pulled
by Wolfgang, but u-boot/master may also contain patches that are needed

Can you merge a local repo with multiple remotes? So could developer 'x':

$ git checkout local_dev_branch_for_feature_x
$ git fetch u-boot
$ git fetch u-boot-x86
$ git merge u-boot/master
$ git merge u-boot-x86/master
$ code...code...code
$ git format-patch
$ git send-email


> i'd draw some ascii diagrams of the commit history, but i'm not sure it would
> help.  instead, run `gitk` and look at the tree on the left around the merge
> commits.  hopefully that'll clear things up.
>
>> >  - reset your local master to your current remote master
>> >        $ git checkout master
>> >        $ git reset --hard origin/master
>>
>> I don't think this will work - The remote master (i.e. u-boot-x86/master
>> on the denx server) has the duplicate commits already...
>
> oh, you've already published the bum history ?  i thought it was only local.
> then you'll have to do:
>        $ git checkout master
>        $ git rebase u-boot/master
>        $ git push --force <remote uri> master

Hmm, I don't think this will, in and of itself, help - The duplicate
commits are all local to u-boot-x86/master (they are all x86 patches, not
u-boot patches) but I'll give it a go first...

Failing that:

$ git checkout master
$ git reset --hard <parent of initial instance of first duplicate commit>
$ git push --force <remote uri> master
$ git fetch u-boot
$ git merge u-boot/master
$ git am <patchwork patches>
$ git push <remote uri> master

Regards,

Graeme


More information about the U-Boot mailing list