brave / brave-browser

Brave browser for Android, iOS, Linux, macOS, Windows.
https://brave.com
Mozilla Public License 2.0
17.41k stars 2.25k forks source link

Enable conflict resolution in auto-generated uplifts #38260

Open wknapik opened 3 months ago

wknapik commented 3 months ago

Currently, if there are conflicts, script/uplift.py will just fail, forcing the developer to perform the entire uplift process manually.

I see 480 hits for [ERROR] cherry-pick failed for branch in the uplift channel.

We could improve this by doing everything that can be done automatically and then letting the developer resolve the conflicts.

This could be done by opening the code in some web IDE and letting the uplift requester resolve the conflicts there and create the uplift PR including the resolutions.

Another, simpler option would be to just commit the files including unresolved conflicts, create the PR(s) with a label indicating that the conflicts are there and CI shouldn't run, and let the developer check the branch out locally, resolve conflicts and push. The fix could be easily detected to remove the label via a GitHub action.

cc @bsclifton

wknapik commented 3 months ago

Related https://github.com/brave/brave-browser/issues/38259

bsclifton commented 1 month ago

This is a tough one... I think having it fail is completely reasonable. The resolution can sometimes be painful and take a while, and I think that's OK. Because we do need to be careful about this. The important thing would be getting "back on the tracks" after the manual part is done.

It would be cool if there was a Jenkins job that let you punch in the PR to uplift and then you can specify the branches yourself for beta and/or release. Then, the automation can take back over and create the PRs (from the branches) and create the Slack messages

WDYT?