Re: how to work in hirarchical git model?
- From
Johan Herland <johan@herland.net>
- Date
- Dec 17, 2008, 08:33 UTC
- Message-ID
- <200812170933.04080.johan@herland.net>
- In-Reply-To
- <753177.33978.qm@web112212.mail.gq1.yahoo.com>
On Wednesday 17 December 2008, Gili Pearl wrote:
Show 27 quoted lines
> ----- Original Message ---- > > > From: Johannes Sixt <j.sixt@viscovery.net> > > Gili Pearl schrieb: > > > Here is one problem I saw when trying to work in the three-level > > > model. At some point, I had the following setup: > > > > > > top-level : A----B----C----D > > > \ > > > \ > > > mid-level1: K----L----M > > > \ > > > \ > > > low-level1: X----Y > > > > > > The maintainer of mid-level1 has decided that commits K L M are ready > > > to be merged into the top-level repo. So he rebased on top-level > > > before asking 'please pull', but after that the low-level was not > > > able to rebase on the mid-level any more. > > > > In this model, the mid-level1 maintainer should *not* rebase against > > top-level. Rather, he should ask the top-level maintainer to *merge* > > K-L-M. > > But what if K-L-M conflict with C-D? The one who should take care about > it is the mid-level1 maintainer (or possibly one of the low-level1 > maintainers).
If there is a merge conflict, mid-level1 maintainer will typically merge D and M into a new merge commit N:
top-level : A----B----C----D
\ \
\ \
mid-level1: K----L----M----N...and then ask top-level maintainer to merge N (which should have no conflicts by now). The merge can also be done by low-level1 developer.
Show 9 quoted lines
> > > So what is the right working flow for us? > > > > The only ones who should be allowed to rebase are developers at the > > lowest level. Everyone else should only pull or merge. > > I still don't see clearly what happens next in the example above when the > low level developr wants to push X-Y upstream? On which branch should he > rebase? Need he rebase on mid-level (where K-L-M were already > merged upstream), or maybe direclty on the top-level??
If you're a leaf developer (i.e. allowed to rebase), you should rebase against your immediate upstream's branch. In this example, that is mid-level1's branch.
Have fun!
...Johan
-- Johan Herland, <johan@herland.net> www.herland.net