Thank you all for the constructive and helpful comments!
Cedric said what I did not dare to say openly: my stable branch was created too 
early, which is causing this need to do a merge (heck, I even needed a fast 
forward merge of my stable branch). I did not like it a bit that 
stable/euphrates was created at that commit but I could not do anything about 
it.

I agree that in normal circumstances, you would not do a merge due to the 
special nature of a stable branch. But in my case it just happens that my 
stable branch was created a few weeks ago, and since then about 40 commits went 
in master, many are doc update commits, some are bug fixes, some are minor 
enhancements that all make the master branch a lot more stable than my stable 
branch. Perhaps this will come back in our future discussion on how to 
integrate versioning, branching with XCI.

But to close on this topic I think:

  *   There are exceptions to every rule and in this case merge is the best 
option due to the special circumstances
  *   Process and tools should not get in the way of projects and prevent valid 
exceptions to be dealt properly (here I am frustrated because I can’t even 
submit a merge commit to gerrit)
  *   There is no additional risk in allowing merge commits to be submitted to 
gerrit because the committers can always reject the request

Given I have to finalize my stable branch today, I had no choice but to cherry 
pick all 40 of my master commits into my stable branch, which results in a 
pretty ugly stable branch - when a fast forward merge would have achieved the 
same end result with exactly zero extra commit. But I’ll survive this ;-)

Thanks to Trevor/Ross for their recipe on how to cherry pick/rebase both 
methods work very well (I ended up using Ross’ method of rebasing).

It is likely this will repeat for 6.0 unless we introduce a more flexible 
release model with XCI. Or perhaps a stable branch will no longer be of 
important significance for my project given that the best and most stable 
version of my project will likely always live in another branch than the stable 
branch.
There might be a generally conceived idea that a master branch is usually not 
stable, but that is not necessarily the case for every project.

Thanks

   Alec








From: "Yujun Zhang (ZTE)" <zhangyujun+...@gmail.com>
Date: Friday, October 20, 2017 at 12:50 AM
To: "Alec Hothan (ahothan)" <ahot...@cisco.com>, Trevor Bramwell 
<tbramw...@linuxfoundation.org>
Cc: "opnfv-tech-discuss@lists.opnfv.org" <opnfv-tech-discuss@lists.opnfv.org>
Subject: Re: [opnfv-tech-discuss] [releng] How to merge master to euphrates 
with gerrit

Hi, Alec

See my additional comments.
On Thu, Oct 19, 2017 at 10:06 PM Alec Hothan (ahothan) 
<ahot...@cisco.com<mailto:ahot...@cisco.com>> wrote:
Hi Yujun,

The stable branch is created a few weeks before the release data and a lot can 
happen in a few weeks. It could be lots of small commits related to docs, lots 
of trivial fixes. The point I wanted to make is that you do not want to see all 
these small detail commits on your release branch and hence the notion of 
having a “clean” release branch devoid of detailed small commits that do not 
need to be tracked at that level of branch.
Say you have 20 commits to fix docs or 20 trivial fixes in code in the week 
before release, will you want to have 20 commits on stable branch or one?

One by one, since this is the history of amending the stable branch, we should 
keep it as it is. If we don't want to see trivial fixes, the right way could be 
squash them BEFORE submitting to master branch.

This is a case where a merge makes sense rather than cherry picking each of 
them.

Normally, when we created stable branch, the master branch is mainly used for 
new feature development of next release. It may not be a good idea to merge 
them to stable branch. That's why we use cherry-pick to select only the bug fix 
and document amending. And this can not be done with merge.

Another case where merges make sense is when you deliver 5.1.0 with possibly 
lots of new enhancements to 5.0, it makes sense to merge rather than cherry 
pick lots of commits.

This also confuses me a lot, since the release date for 5.1.0 and 5.2.0 is 
overlapped with 6.0.0 development cycle. Normally I would add NOTHING new in 
5.1.0 or 5.2.0 except for bug fixes. All new features goes into 6.0.0. This may 
save you from cherry-picking a bundle of commits and separate feature 
development from bug fixing.

My another 2 cents.


--
Yujun Zhang
_______________________________________________
opnfv-tech-discuss mailing list
opnfv-tech-discuss@lists.opnfv.org
https://lists.opnfv.org/mailman/listinfo/opnfv-tech-discuss

Reply via email to