Han-Wen Nienhuys <hanw...@gmail.com> writes: > On Fri, May 29, 2020 at 7:04 PM Valentin Villenave > <valen...@villenave.net> wrote: >> >> On 5/27/20, Jonas Hahnfeld <hah...@hahnjo.de> wrote: >> > No, "rebase" is currently manual (with "merge when pipeline succeeds" >> > being automatic). This has been clearly communicated, sorry if you >> > missed that. >> >> Hey Jonas, hey everybody; >> just so you know, I’m getting increasingly frustrated -- as you may >> .. >> -- The need to let the pipeline run every time an MR branch is > > I concur that this is problematic. Today, I spent several hours > shepherding my multiple MRs through the process, which was > additionally complicated by David and Valentin doing the same.
Well, I'll have to admit that I cheated. Essentially by working with a virtual staging branch: I checked what pipelines were running, checked the associated issues for "merge upon completion". And then I just rebased on the not-yet-merged pipeline and started my own pipeline on that, getting a solid headstart before anybody waiting for the original pipeline to complete. Problem: this is not more than a smartass move really since it does not scale and would get the more error-prone the more people try something like that. Also you'll see that the last branch information in my merge requests includes the not-yet-pushed commits that I rebased on. So I lean towards the following process modeled upon our old one: No push to master except by automation. Staging is unprotected and gets scheduled runners. People ultimately rebase and push there once they get Patch-push status. Default branch can be master as long as we make sure that one cannot push there: that way you never rebase on ephemeral commits. When James gives Patch-push status (which he hopefully does supported by a script), at the same time any merge request pointed at master gets changed to point at staging. So if you are "Patch-push", the "Push" button starts working. That means as long as staging isn't stuck (and we should make sure that the scheduled pipelines do not pick up the same commit more than once to avoid wasting our minutes), you can rebase on master when you want (or not). One initial pipeline run should be require to get into "Review" state. Rebasing puts you back to "Patch-new" (which for trivial stuff you may choose to hand-replace with "Patch-review" at the danger of later getting staging borked). It would be nice that if staging has tested as being borked, we could temporarily disable pushes to staging: that will keep the patches and merge requests requiring redoing limited. We got out along without that previously but if the automation is good for that, that would be great. At any rate, this scheme naively does not seem to require stuff impossible to do with Gitlab, at least for the basic parts of operation. And it would mean that you can usually rebase and forget without waiting for pipeline completions. And you get the liberty of bypassing most CI and rebases if you don't want to. I may be wrong about the possibility to do this with a reasonable amount of effort: I don't want to get hopes up unnecessarily. -- David Kastrup