Discussion attached.
We decided to handle integration between the master and metamodel
branches by doing intermediate merges from master to metamodel and
ultimately rebasing metamodel on top of master for the final integration.
--
st...@hibernate.org
http://hibernate.org
[08:33] <sebersole> i just wanted to discuss (1) blog site and (2)
metamodel/master synching
[08:33] <sebersole> though i guess we can just keep going on (1) on email
[08:34] <sebersole> hardy_: ^^
[08:34] <hardy_> ahh
[08:35] <sebersole> but we really have not had much to discuss the last few
meetings
[08:35] <hardy_> yeah, need to get some stuff
[08:35] <hardy_> right
[08:35] <sebersole> felt like a bit of a soliloquoy ;)
[08:35] <hardy_> gee, does this word exist for real?
[08:36] <sebersole> hehe
[08:36] <sebersole> talking to oneself
[08:36] <hardy_> right
[08:36] <hardy_> monolog is the word I would know
[08:36] <sebersole> ah, thats a bit diff
[08:37] <sebersole> the audience is the diff
[08:37] <sebersole> yourself versus others
[08:37] <hardy_> sure, get it
[08:37] <sebersole> ok
[08:37] <hardy_> jupp
[08:37] <hardy_> cool, just learned a new word
[08:37] <sebersole> you have to remember my degree is in lit :D
[08:37] <hardy_> :-)
[08:38] <-- madhumita has left this server (Ping timeout: 244 seconds).
[08:38] <hardy_> problem is I won't be able to remember it, because I cannot
even imagine how to pronounce it :-)
[08:38] <sebersole> you have time to chat about (2) now?
[08:38] <hardy_> sure
[08:38] <sebersole> i am just trying to understand the implications of the diff
approaxches
[08:38] <hardy_> regarding (1) I think it is best to be continued on the email
thread
[08:39] <sebersole> is merging really what we want?
[08:39] <hardy_> my preference is awestruct on Openshift, but anyways
[08:39] <hardy_> which different approaches?
[08:39] <sebersole> well i see a few approaches
[08:40] <sebersole> 1) merge master -> metamodel; eventually merge metamodel ->
master
[08:40] <sebersole> 1) merge master -> metamodel; eventually rebase master ->
metamodel + merge -> master
[08:40] <sebersole> grr
[08:40] <sebersole> 2) merge master -> metamodel; eventually rebase master ->
metamodel + merge -> master
[08:41] <sebersole> 3) rebase master -> metamodel; eventually rebase master ->
metamodel + merge -> master
[08:41] <hardy_> thinking ...
[08:41] <sebersole> i think its really a matter of (1) how we few the metamodel
dev and (2) whether we intended to leverage development being sucked into
metamodel from master
[08:43] <hardy_> not sure about your (1), but my main point is (2)
[08:44] <hardy_> I want to make sure that metamodel does not diverge too much
from master
[08:44] <sebersole> sure
[08:44] <sebersole> but
[08:44] <sebersole> thats not really what i mean with (2)
[08:44] <hardy_> ohh
[08:44] <sebersole> sorry, should have done those as (a) and (b) :)
[08:44] <sebersole> i think its really a matter of (a) how we few the metamodel
dev and (b) whether we intended to leverage development being sucked into
metamodel from master
[08:44] <sebersole> so for example..
[08:45] <sebersole> say we further develop multi-tenance on master
[08:45] <sebersole> then after some integration of master -> metamodel, we
leverage that new developement in some way
[08:45] <sebersole> then logically the 2 should be handled by merge
[08:46] <sebersole> because the really do have a "mixed develpment line"
[08:47] <sebersole> but if instead (and this is what i think) the integration
is more to make sure that we are not breaking tests added to master during
metamodel tests, then that is logically a rebase imho
[08:47] <sebersole> s/metamodel tests/metamodel dev
[08:47] <sebersole> then the question becomes how to best achieve rebase if
thats the route
[08:48] <hardy_> so a regular rebase of the metamodel branch on top of master
[08:48] <hardy_> that is what I meant in my email
[08:48] <sebersole> well i think we use different language for rebasing :)
[08:48] <hardy_> I would like to rebase the metamodel branch regularly onto
master
[08:48] <hardy_> maybe
[08:48] <sebersole> but i think we are saying the same thing
[08:49] <sebersole> i think of `git checkout metamodel; git rebase master` as
rebasing master on to metamodel
[08:49] <hardy_> that's what I mean as well :-)
[08:49] <sebersole> or rebasing metamodel on top of master
[08:50] <sebersole> ok
[08:50] <sebersole> we all just seem to use diff lang
[08:50] <hardy_> that's the way I say it
[08:50] <sebersole> ok
[08:51] <hardy_> my initially thought was that since we have not done this
before we should do a merge first (and then regularly rebase)
[08:51] <sebersole> so i will try rebase first
[08:51] <sebersole> not sure there is an initial diff
[08:51] <hardy_> exactly
[08:52] <sebersole> well i mean in terms of "complexity"
[08:52] <hardy_> I started to wonder as well
[08:52] <sebersole> there is obviously a diff in how the timeline ends up
[08:52] <hardy_> sure
[08:52] <sebersole> but
[08:52] <sebersole> if we do:
[08:52] <hardy_> but you will have to resolve the same amount of conflicts
[08:52] <sebersole> [08:40] <sebersole> 2) merge master -> metamodel;
eventually rebase master -> metamodel + merge -> master
[08:53] <sebersole> then the "regular" integration being merge or rebase is
irrelevant i think
[08:53] <sebersole> again, my concern is the timeline
[08:54] <sebersole> if this were local on my machine, i would unequivocally
(another new word? ;) be doing rebasing
[08:54] <sebersole> is metamodel being shared really that big of a shift that
we now merge?
[08:54] <hardy_> jump another word :-)
[08:55] <sebersole> sorry
[08:55] <sebersole> without a doubt
[08:55] <sebersole> not even a question
[08:55] <hardy_> no problem. I have my favorite dictionary handy -
http://dict.leo.org :-)
[08:55] <hardy_> and I kind of guessed anyways
[08:55] <sebersole> sweet
[08:57] <sebersole> hardy_: my (2) option is based on my experiences with
integrating pull requests that include merge commits
[08:58] <sebersole> rebase basically strips them out and reorders those commits
"to the end"
[08:58] <hardy_> right
[08:58] <hardy_> rebasing is in this sense much nicer
[08:58] <sebersole> using merge for the regular integrations has another nice
benefit
[08:59] <hardy_> however, if you rebase people will need to always get the
rebased branch
[08:59] <sebersole> namely, using rebase for the regual integration causes
"problems" in terms of ongoing metamodel dev
[08:59] <-- smarlow has left this server (Quit: Leaving).
[08:59] <sebersole> right
[08:59] <hardy_> I have no problem with that
[09:00] <hardy_> as long as the one doing the rebase gives a heads up
[09:00] <hardy_> then I can decide to either push my outstanding changes or
stash them until I get the rebased branch
[09:00] <sebersole> so you like (2) or (3)?
[09:01] <sebersole> just trying to make sure i understoidd
[09:01] --> gbadner has joined this channel
(~gbad...@c-50-132-6-30.hsd1.wa.comcast.net).
[09:02] <sebersole> meeting bot not here anyway
[09:02] <hardy_> 3
[09:02] <sebersole> ok, thanks
[09:02] <sebersole> gbadner: we just discussing optioins for integrating master
into metamodel
[09:03] <sebersole> [08:40] <sebersole> 1) merge master -> metamodel;
eventually merge metamodel -> master
[09:03] <sebersole> [08:40] <sebersole> 2) merge master -> metamodel;
eventually rebase master -> metamodel + merge -> master
[09:03] <sebersole> [08:41] <sebersole> 3) rebase master -> metamodel;
eventually rebase master -> metamodel + merge -> master
[09:03] <gbadner> thinking (slowly)
[09:03] <sebersole> np
[09:03] <sannegrinovero> sebersole, trying to summarize the long chat, you are
proposin to do frequent merges from master into metamodel, and a single final
rebase before merging metamodel in master?
[09:04] <sebersole> sannegrinovero: well merge/rebase for the regular
integrations is i think the thing to decide
[09:04] <sebersole> but
[09:04] <sannegrinovero> are that 3 different alternatives ?
[09:04] --> jpav has joined this channel (jpav@redhat/jboss/jpav).
[09:04] <sebersole> i think rebase for the final integration is def the way to
go
[09:05] <sannegrinovero> +1, and if you merge frequently from master, you would
minimize conflicts
[09:05] <gbadner> sebersole, have you tried rebasing master into metamodel?
[09:05] <sebersole> sannegrinovero: you mean conflicts at the end?
[09:05] <sebersole> gbadner: rebasing versus megring right now is going to be
the same in terms of complexity
[09:06] <sannegrinovero> sebersole, yes.
[09:06] <sebersole> sannegrinovero: well the same is true whether we rebase or
merge regularly
[09:07] <sebersole> i think really we have to look at these things:
[09:07] <sannegrinovero> right. I was thinking about it as a "merge frequently
from master" vs. "doing nothing - just merge from metadata in the end"
[09:07] <sebersole> [08:44] <sebersole> i think its really a matter of (a) how
we view the metamodel dev and (b) whether we intended to leverage development
being sucked into metamodel from master
[09:07] <sebersole> sannegrinovero: sure, thats why i started using the term
"integrate" :)
[09:08] <sebersole> its merge/rebase agnostic
[09:08] <sebersole> [08:45] <sebersole> say we further develop multi-tenance on
master
[09:08] <sebersole> [08:45] <sebersole> then after some integration of master
-> metamodel, we leverage that new developement in some way
[09:08] <sebersole> [08:45] <sebersole> then logically the 2 should be handled
by merge
[09:09] <sebersole> [08:46] <sebersole> because then we really do have a "mixed
develpment line"
[09:09] <sebersole> [08:47] <sebersole> but if instead (and this is what i
think) the integration is more to make sure that we are not breaking tests
added to master during metamodel dev, then that is logically a rebase imho
[09:10] <sebersole> [08:54] <sebersole> if this were local on my machine, i
would unequivocally be doing rebasing
[09:10] <sebersole> [08:54] <sebersole> is metamodel being shared really that
big of a shift that we now merge?
[09:10] <sebersole> so there is a shift there
[09:11] <sebersole> and the fact that rebasing + push is rewriting the shared
history
[09:11] <sebersole> but we all just need to be aware of that
[09:11] <sebersole> and whoever does the rebase+push needs to communicate when
that happens
[09:12] <sebersole> so my prefer is definitely (2) or (3)
[09:12] <sebersole> i think ultimately this should be a rebase
[09:12] <gbadner> +1
[09:13] <sebersole> i *think* using rebase for the regular integrations makes
that easier, but i am not for sure
[09:13] <sebersole> i have had pretty good results of rebasing "over" merges
[09:14] <sebersole> like that email i sent to dev awhile back about rebasing
pull requests that contain merge comits
[09:14] <gbadner> there shouldn't be much overlap in development between the 2
branch, should there?
[09:15] <sebersole> gbadner: no, i think this is mostly an exercise to pull
over any new tests
[09:15] <gbadner> oh, ok
[09:15] <sebersole> and make sure we are not breaking those as we develop
metamodel
[09:15] <sebersole> thats from my pov
[09:15] <gbadner> yeah, seems rebasing makes sense
[09:15] <hardy_> then I definitely would try with an initial rebase as well
[09:15] <sebersole> maybe others see it diff
[09:16] <sebersole> ok, then that is what i will try today
[09:17] <-- zroubali has left this server (Quit: Konversation terminated!).
[09:18] <hardy_> sebersole: good luck
[09:18] <sebersole> hehe
[09:18] <hardy_> maybe the git force be with you
[09:18] <sebersole> lol
[09:18] <hardy_> s/maybe/may/
[09:18] <sebersole> funny considering gitbu uses that star wars scene for 404
[09:19] <sebersole> this is not the page you are looking for
[09:19] <sebersole> lol
[09:21] [Whois] sjacobs is sjacobs@redhat/jboss/sjacobs (Steve Jacobs)
[09:21] [Whois] sjacobs is a user on channels: #hibernate-dev
[09:21] [Whois] sjacobs is online via niven.freenode.net (Corvallis, OR, USA).
[09:21] [Whois] sjacobs has been idle for 1 hour, 38 minutes, and 28 seconds.
[09:21] [Whois] sjacobs has been online since 06/07/12 07:42:45 AM.
[09:21] [Whois] sjacobs is logged in as sjacobs.
[09:21] [Whois] End of WHOIS list.
[09:21] <sebersole> anything else anyone wants to discuss?
[09:21] <sannegrinovero> I'd avoid the intermediate rebases.
[09:22] <sannegrinovero> (sorry was AFK)
[09:22] <sebersole> sannegrinovero: why?
[09:22] <sebersole> yes it takes more coordination
[09:22] <sannegrinovero> well we shouldn't be afraid of using merges, they have
been invented for this purpose
[09:23] <sannegrinovero> we kinda dislike merge commits, because up to this
point they where a sign of smelly process
[09:23] <sebersole> and they are here too
[09:23] <sannegrinovero> but really "smelly" just meant "different" than what
we agreed to do
[09:23] <sebersole> these 2 branches are totally isolated dev
[09:23] <sannegrinovero> but they seem to be *the* appropriate thing for this
use case
[09:23] <sannegrinovero> so we should not consider them a bad thing
[09:23] <sebersole> i disagree
[09:24] <sannegrinovero> why?
[09:24] <sebersole> metamodel is being developed in isolation
[09:24] <sannegrinovero> since you don't rewrite history, and merge tracks
exactly what happened in the same sequence people experienced the merge, it
makes it more natural to understand what is happening as it closely matches the
development timeline.
[09:24] <sebersole> if there was synergy betwen the 2 branches, then ok i can
see that the timelines are indeed mixed
[09:25] <sebersole> but that is simply not the case here
[09:25] <sebersole> sannegrinovero: thats one way to look at it sure
[09:25] <sebersole> but thats not the way i look at it
[09:25] <sebersole> nor does it seem hardy or gail look at it that way
[09:25] <sannegrinovero> did you consider that these merge commits that I'm
proposing will disappear when you rebase in the end?
[09:26] <sebersole> yep
[09:26] <sebersole> if you scroll up i discussed that :)
[09:26] <sannegrinovero> ok then, I just assume that they are basically the
"milestones" marked in the history - temporarily - which nicely replace the
emails storm you otherwise have to generate. looks like a better tool than
emails.
[09:26] <sebersole> sannegrinovero: here is the ultimate question for me...
[09:27] <sebersole> [09:10] <sebersole> [08:54] <sebersole> if this were local
on my machine, i would unequivocally be doing rebasing
[09:27] <sannegrinovero> +1, agreed that's the ultimate question.
[09:27] <sannegrinovero> I'd suggest merges because I've seen people struggling
with these rebases happening during MongoDB/OGM
[09:27] <sebersole> so does metamodel being pushed and shared change that?
[09:28] <sebersole> how so?
[09:28] <sannegrinovero> mostly because they weren't very confident with git.
that's not the case here
[09:28] <sebersole> without question there is more "danger" in using rebase for
the regular integrations
[09:28] <sebersole> exactly
[09:29] <sebersole> merging is undeniably "easier"
[09:29] <sebersole> and then rebasing at the end still gets use the singular
timeline
[09:29] <sebersole> like i said, i def prefer (2) or (3)
[09:29] <sebersole> (2) is what you seem to prefer as well
[09:29] <sannegrinovero> ok, looks good.
[09:30] <gbadner> I'm ok w/ 2)
[09:30] <sebersole> gbadner: it would be easier to deal with for you and john
and whoever else does work on metamodel
[09:31] <sebersole> ok
[09:31] <sebersole> hardy_: ?
[09:31] <sebersole> you seemed to be cool with that from when we were talking
before
[09:31] <sannegrinovero> I mean, I'm not against 3 either. your call, just
sharing our experience. I don't think you'll get in trouble with either
approach, as long as you'll all prepared for more communication and some
occasional hard core git.
[09:31] <sebersole> just trying to make sure we have a consensus
[09:31] <jpav> I missed the initiall numbered list apparently, but I'm totally
good with the rebase for the integration.
[09:32] <sebersole> [09:03] <sebersole> [08:40] <sebersole> 1) merge master ->
metamodel; eventually merge metamodel -> master\
[09:32] <sebersole> [09:03] <sebersole> [08:40] <sebersole> 2) merge master ->
metamodel; eventually rebase master -> metamodel + merge -> master
[09:32] <sebersole> [09:03] <sebersole> [08:41] <sebersole> 3) rebase master ->
metamodel; eventually rebase master -> metamodel + merge -> master
[09:33] <gbadner> sebersole, are you thinking that after the initial rebase (or
merge) that we would rebase master before pushing new commits?
[09:33] <sebersole> and the end of the day (integrating metamodel back into
master) (2) and (3) are the same outcome
[09:33] <sebersole> gbadner: no
[09:34] <sebersole> just keep rebasing metamodel
[09:34] <sebersole> i think the master->metamodel integration should be a
separate step
[09:35] <gbadner> rebase metamodel?
[09:35] <sebersole> we can decide on either a regular schedule for it or
as-needed
[09:35] <sebersole> gbadner: well assuming you use a local topic branch, yeah
[09:35] <sebersole> generally you do work with `git checkout -b HHH-123
metamodel`
[09:35] <jbossbot> jira [HHH-123] Filters for subclasses [Closed (Fixed)
Improvement, Major, Steve Ebersole] https://hibernate.onjira.com/browse/HHH-123
[09:35] <sebersole> lol
[09:36] <gbadner> yes
[09:36] <sebersole> then when you are done with that topic branch you need to
`git rebase metamodel`
[09:36] <gbadner> yeah, the usual
[09:36] <sebersole> right, so
[09:36] <sebersole> [09:34] <sebersole> just keep rebasing metamodel
[09:36] <gbadner> I was just wondering if it's worthwhile to also rebase master
[09:37] <sebersole> i'd say def not\
[09:37] <sebersole> hey guys/gals i need to run
[09:37] <sebersole> i'll work on a merge then today and push that to metamodel
[09:38] <gbadner> ok, so I assume we should hold off on new commits on metamodel
[09:38] <sebersole> nah, continue as normal
[09:38] <sebersole> i'll handle it
[09:39] <gbadner> ok
[09:39] <sebersole> dont push "just cuz" ;)
[09:39] <gbadner> heh, ok
[09:39] <sebersole> but if you push, i'll deal
[09:39] <gbadner> okiedoke
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev