Git merge workflow: reverse it?

Elvis Angelaccio elvis.angelaccio at kde.org
Tue Aug 25 22:16:52 BST 2020


On 24/08/20 21:55, Albert Astals Cid wrote:
> El dilluns, 24 d’agost de 2020, a les 0:39:17 CEST, Elvis Angelaccio va escriure:
>>
>> On 29/07/20 14:01, Bhushan Shah wrote:
>>> Hello everyone!
>> Hi Bhushan
>>>
>>> At plasma, we are experimenting with new workflow regarding how bugfixes
>>> are put on the stable branch [1].
>>>
>>> # Previous workflow
>>>
>>> - Current workflow is that we commit to stable branch and then merge it
>>>   upwords until master branch
>>> - i.e commit to Plasma/5.18 branch, merge 5.18 into 5.19 and then
>>>   master
>>>
>>> # Current workflow
>>>
>>> - Proposed workflow is to instead commit all changes in master, and
>>>   cherry-pick related changes in the stable branch as needed
>>> - We had been using this workflow for about 1 month now and I'd say it
>>>   is working nicely for us.
>>>
>>> # Why?
>>>
>>> We occasionally hit several issues with previous workflow,
>>>
>>> - Merge conflicts when merging changes upwords
>>> - Changes which are valid only for stable branch needs to be reverted in
>>>   master branches. So you end-up with, stable-fix, revert of stable fix
>>>   and then different fix and overall weird history.
>>> - Accidential merges from the master branch to stable branch which
>>>   needs to be force-resetted.
>>> - It's worth noting that Qt also recently changed to merge to dev,
>>>   cherry-pick backwards.
>>> - This also allows for workflows where we want to commit some bugfix in
>>>   the master branch for few days/weeks and if it works fine in general
>>>   testing then, cherry-pick it in stable branches.
>>>
>>> Proposal is to probably adapt this policy kde-wise if people feel that
>>> advantages are worth it.
>> IMHO the workflow choice should be left to each project. 
> 
> I disagree for it to per project, it has to be a global policy, otherwise contributing gets more complicated, since I have to remember for each project if they want bugfix patches to master or to stable.
> 
> Or at least it has to be the same for all the release service projects, because otherwise it'll break my brain when doing the branching for new releases. Right now i know that we always commit to stable and then merge to master, but since people are lazy i know i have to run a merge from stable to master before branch for all projects, if we let this decision to be per project, what do I do?
> 
>> I can see why
>> you may want to use it in Plasma, but for the apps I maintain it would
>> probably double the work for no practical gain.
> 
> Why would it be double the work?

I was mainly referring to the amount of work for tests. The git part is
trivial either way indeed.

> 
> Now:
>  * Press the merge button in the gitlab UI
>  * git fetch && git checkout master && git pull --rebase && git merge origin/stable/branch
> 
> After:
>  * Press the merge button in the gitlab UI
>  * git fetch && git checkout stable && git pull --rebase && git cherry-pick origin/master
> 
> Seems the same amount of work to me (if there's no conflicts)

Now:
* Test the fix on stable
* Push to stable
* Merge stable to master

After:
* Test the fix on master
* Push to master
* Test the fix on stable
* Cherry-pick to stable

In the second model I need to test twice because I can't change the
stable branch without testing.

> 
> Cheers,
>   Albert

Cheers,
Elvis




More information about the kde-core-devel mailing list