On 06/08/16 12:08, David Woodhouse wrote:
> On Thu, 2016-05-19 at 10:30 +0200, Laszlo Ersek wrote:
>>
>> master                                                 final merge
>> *-------*-----*-------*--------*-----------*------*----*------>
>>  \                     \                    \         /
>>   \                     \                    \       /
>>    *-*-*-[discont.]      *-*-*-[discont.]     *-*-*-*
>>    feature               rebased feature      rebased feature
>>
>>
>> 1.2. Merging. It has the benfit that your development history on the
>> feature (staging) branch will be preserved in edk2 master too. 
> 
> Do not underestimate this benefit. When you are rebasing a complex
> piece of work, and changes in master have affected things which it
> interacts with (like OpenSSL being changed and updated), there is a
> *distinct* possibility that during one of the rebases, you introduce a
> bug. Something that *did* work when you originally wrote your code, now
> no longer works.
> 
> And because you rebased and the old discontinued branches are lost in
> the mists of time (and no longer reachable from the version control
> history), the effect is basically that it *never* worked. You're making
> it look like you committed code that was broken from day one.
> 
> So six months down the line when you realise that some specific corner
> case is broken, and you think "oh, I could have *sworn* I tested that",
> and you go back with all the tools like git-bisect to find where the
> breakage occurred, you're screwed because the history doesn't reflect
> reality.
> 
> If you rebase, you are not using the version control system as it is
> intended to be used. You are wilfully *damaging* the history, and you
> do so at your peril.
> 
>> On the other hand, you have to be careful about the frequency of
>> master-to-staging merges. If you do it very frequently, you'll end up
>> with a complex history.
> 
> Conversely... do not *overestimate* the relevance of a "complex
> history". History is non-linear and contains merged. That is an
> accurate representation of what happened, which is what a version
> control system exists to report.
> 
> You'll mostly neither notice nor care even if you do a gratuitous merge
> from master into your topic branch every day. It just annoys the neat-
> freaks, that's all. So sure, merge back from master only when you
> *need* to. But don't lose sleep over it.
> 
>> In the Linux community, merging is preferred, and a master-to-topic
>> merge is advised whenever the master branch receives a feature or a
>> bugfix that is important for the topic branch as well. That is, no
>> spurious merges.
> 
> That's the norm for basically everyone who is using the version control
> system as it is intended. There are some exceptions, but they're mostly
> doing odd things like pretending git is svn (as edk2 currently is, but
> hopefully not for *too* much longer).

FWIW, I too feel that for such long-living feature branches like
HTTPS-TLS, merging is preferable (both for periodic master-to-feature
syncs, and for the final feature-to-master incorporation). The risk for
rebases to regress the (presumably many and finicky) patches on the
feature branch is just too high otherwise -- the longer the feature
development, the higher the risk, IMO.

Just my two cents anyway -- the decision is ultimately up to the
HTTPS-TLS developers, it's their code and work. :)

Thanks
Laszlo

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to