public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] U-Boot git usage model (was: Re: [PULL] u-boot-usb/next)
Date: Tue, 09 Oct 2012 15:03:28 -0600	[thread overview]
Message-ID: <50749120.1070703@wwwdotorg.org> (raw)
In-Reply-To: <20121009142304.GA16530@bill-the-cat>

On 10/09/2012 08:23 AM, Tom Rini wrote:
> On Sun, Oct 07, 2012 at 08:49:00PM +0200, Marek Vasut wrote:
> 
>> NOTE: I get a few more size issues with ELDK 4.2 on IXP (that
>> big-endian ARM) after this patchset is applied. I wonder if we
>> shouldn't just throw these away, since they're dead code mostly.
>> 
>> The following changes since commit
>> c7ee66a8222660b565e9240775efa4c82cb348c2:
>> 
>> Merge branch 'next' of git://www.denx.de/git/u-boot-ppc4xx into
>> next (2012-10-02 10:16:40 -0700)
>> 
>> are available in the git repository at:
>> 
>> 
>> git://git.denx.de/u-boot-usb.git next
>> 
>> for you to fetch changes up to
>> f0ede0e8305bc3c959862446bce40cb028b36293:
>> 
>> usb.h: Add udc_disconnect prototype to usb.h (2012-10-07 02:08:48
>> +0200)
> 
> I had to rebase this locally to merge (such is next), and now it's 
> applied to u-boot/next, thanks!

Hmm. Can't "git merge" solve merge conflicts just as well as "git rebase"?

The problem with rebasing when pulling is that git commit IDs change,
so it's much more difficult to determine when a commit is merged into
a parent tree; one has to search by commit subject rather than just
executing e.g. git branch -a --contains XXX. I thought Albert just
agreed to use merges rather than rebases for u-boot-arm for this and
perhaps other reasons.

It would be awesome if U-Boot could adopt something more similar to
the Linux kernel's git usage model, namely:

* All downstream branches are based off some known stable point in the
master branch (e.g. 2012.10-rc1). Before these branches are merged
into any other branch, they can be rebased if absolutely needed, but
preferably not.

* Once a downstream branch is merged upwards, the downstream branch
doesn't merge upstream back down into the downstream branch, but either:

a) Keeps adding to the existing branch so that incremental pull
requests can be sent.

Or often when u-boot/master has made a complete new release does:

b) Creates a new branch based on the latest rc or release from
u-boot/master.

(in practice, downstream branches typically end up with something like
for-3.5 based on v3.4-rcN, for-3.6 based on v3.5-rcN, for-3.7 based on
v3.6-rcN, some running in parallel containing either important
bugfixes for the release or new development as determined by the
current state of the various releases in the mainline tree).

* When a branch is merged from a repo to a parent repo, it's always a
git merge --no-ff; never a rebase or fast-forward.

* In order to resolve merge conflicts/dependencies between different
downstream branches, one of the following happens:

1)

a) The first downstream branch gets merged into u-boot/master.
b) The second downstream branch creates a new branch starting at an an
rc or release in u-boot-master that contains it the required patches.
c) The dependent patches are applied to the second downstream branch.
d) The second downstream branch gets merged into u-boot/master.

2)

All the patches that would usually be merged through downstream branch
2 actually get ack'd by the maintainer of downstream branch 2 and
applied to downstream branch 1 after the patches they depend on. This
is simplest, but may cause complications if both branches need to take
patches that build on the merged patches they're merged into an rc or
release in u-boot/master.

3)

A topic branch is created by one of the downstream maintainers,
branched from a u-boot/master rc or release, and containing just the
patches that other patches depend on, and this topic branch gets
merged into both the two downstream branches for further work.

Yes, this does all take a little bit more thought, planning, and
co-ordination, but I think having a simpler and more stable git
history is worth it.

  reply	other threads:[~2012-10-09 21:03 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-07 18:49 [U-Boot] [PULL] u-boot-usb/next Marek Vasut
2012-10-09 14:23 ` Tom Rini
2012-10-09 21:03   ` Stephen Warren [this message]
2012-10-09 21:32     ` [U-Boot] U-Boot git usage model (was: Re: [PULL] u-boot-usb/next) Tom Rini
2012-10-09 22:14       ` [U-Boot] U-Boot git usage model Stephen Warren
2012-10-09 22:43         ` Albert ARIBAUD
2012-10-09 23:02           ` Graeme Russ
2012-10-09 22:59         ` Tom Rini
2012-10-09 23:07           ` Stephen Warren
2012-10-09 23:17           ` Graeme Russ
2012-10-09 23:00         ` Scott Wood
2012-10-09 23:25           ` Stephen Warren
2012-10-10  0:20             ` Scott Wood
2012-10-10 15:55               ` Stephen Warren
2012-10-10 22:02                 ` Scott Wood
2012-10-10 22:19                   ` Stephen Warren
2012-10-11  7:19                     ` Wolfgang Denk
2012-10-11 11:53                       ` Jason Cooper
2012-10-11 17:00                       ` Stephen Warren
2012-10-13 19:08                         ` Wolfgang Denk
2012-10-11 16:27                   ` Albert ARIBAUD
2012-10-11  7:28                 ` Wolfgang Denk
2012-10-11 16:54                   ` Stephen Warren
2012-10-13 18:58                     ` Wolfgang Denk
2012-10-09 22:19       ` [U-Boot] U-Boot git usage model (was: Re: [PULL] u-boot-usb/next) Albert ARIBAUD
2012-10-09 23:04         ` [U-Boot] U-Boot git usage model Stephen Warren
2012-10-10  6:15           ` Albert ARIBAUD
2012-10-10 16:04             ` Stephen Warren
2012-10-10 18:40               ` Albert ARIBAUD
2012-10-11 16:54                 ` Scott Wood
2012-10-11 17:16                   ` Albert ARIBAUD
2012-10-11 17:26                     ` Stephen Warren
2012-10-11 18:30                       ` Albert ARIBAUD
2012-10-13 19:30                         ` Wolfgang Denk
2012-10-13 21:13                           ` Tom Rini
2012-10-13 22:25                             ` Wolfgang Denk
2012-10-15 17:56                               ` Tom Rini
2012-10-15 19:00                                 ` Wolfgang Denk
2012-10-13 19:17                       ` Wolfgang Denk
2012-10-15 16:32                         ` Stephen Warren
2012-10-15 18:55                           ` Wolfgang Denk
2012-10-15 21:42                             ` Stephen Warren
2012-10-11 18:13                     ` Scott Wood
2012-10-11 18:45                       ` Albert ARIBAUD
2012-10-11 18:59                         ` Scott Wood
2012-10-12 10:11                           ` Albert ARIBAUD
2012-10-12 21:49                             ` Scott Wood
2012-10-13 19:20                       ` Wolfgang Denk
2012-10-13 19:06                   ` Wolfgang Denk
2012-10-11  7:17               ` Wolfgang Denk
2012-10-11 16:38       ` [U-Boot] U-Boot git usage model (was: Re: [PULL] u-boot-usb/next) Tom Rini
2012-10-11 17:16         ` Scott Wood
2012-10-11 17:22           ` [U-Boot] U-Boot git usage model Stephen Warren
2012-10-11 17:27           ` Tom Rini
2012-10-11 18:30             ` Scott Wood
2012-10-12  5:29               ` Stefan Roese
2012-10-12 15:49                 ` Tom Rini
2012-10-13 19:34               ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50749120.1070703@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox