WebKit's commit-queue is part of EWS [wiki:"EarlyWarningSystem"] and provides a way for contributors without commit privileges to get their changes into WebKit, as well as for everyone to have their patches tested and landed. == Commit Queue Process == 1. Contributer set "commit-queue=?" on their patch. 1. Committer sets "commit-queue=+" in response. 1. commit-queue polls bugzilla for the list of cq+'d patches, verifies that it can build with the patch, run macOS webkit2 layout tests on it. If the build and tests passes, it commits the patch to the repository. == Commit Queue FAQ == === Q: What do the commit-queue states mean? === * commit-queue=+ // Patch is 100% ready for commit, the commit bot should land it. * commit-queue=- // Patch is not ready for committing or needs manual landing (set this when you don't want any chance of auto-commit). * commit-queue=? // Set by non-committers to ask someone to approve their patch for auto-commit. === Q: Who can set commit-queue+? === Only a committer or reviewer that has an entry in the following file can set the commit-queue flag on a bug: https://github.com/WebKit/WebKit/blob/main/Tools/Scripts/webkitpy/common/config/contributors.json === Q: How long until a patch lands after I set commit-queue+? === 2-30 minutes. Depends on whether the patch has already passed mac-wk2 queue and depending on incremental build speed. The commit-queue will not commit when the macOS build is broken. === Q: My patch was rejected by the commit queue, what should I do!? === First, read the comment the commit queue added to the bug. If the message is not clear, feel free to email admin@webkit.org. Sometimes the commit-queue rejects patches due to flakey tests. Don't worry, whoever is running the commit queue should add your patch back to the queue if it was wrongly rejected. === Q: How can I see what's in the commit-queue? === [https://ews-build.webkit.org/#/builders/Commit-Queue commit queue status] or the [https://bugs.webkit.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&field0-0-0=flagtypes.name&list_id=6906485&order=Last%20Changed&query_format=advanced&type0-0-0=equals&value0-0-0=commit-queue%2B list of commit-queue+ bugs] `webkit-patch bugs-to-commit` will also print out any pending bugs. === Q: What checks does commit-queue do before landing? === `build-webkit` (on Mac) and then `run-webkit-tests`. === Q: When I review a patch, should I set commit-queue+? === If you would like the commit bot to land the patch, yes. === Q: Help! The commit queue broke the tree! Who do I blame? === Setting commit-queue+ on a patch is the moral equivalent of typing "svn commit" on the command line. That means whoever set the flag to + is responsible for watching the tree and cleaning up if disaster strikes. The proper response is normally to just roll out the change which broke the tree -- `webkit-patch rollout` can assist with this. === Q: When does the commit queue fix up the svn author? === If you are a committer, and you use the commit queue, the server should fix up the author of the commit automatically, when you use your svn username in the ChangeLog. If you are not a committer, or the server can not find a vaild svn username in the commit message, commit-queue@webkit.org will be used as author. === Q: When I don't want my patch to be auto-landed, what should I do? === You don't need to do anything. Only commit-queue+ patches are auto-landed. Setting commit-queue- will make extra-sure. === Q: If I want my patch landed, and I'm not a committer, what do I do? === Set "commit-queue=?". A committer can set it to commit-queue+ === Q: What does cq+ mean? === Some of us have been shortening commit-queue to "cq" when typing, so cq+ is "commit-queue=+". Similar to how r+ is "review=+". === Q: Can I run the commit-queue myself? === No. === Q: Does the commit-queue fix the "Reviewed by NOBODY" in any ChangeLogs in the patch? === Yes `webkit-patch` calls `svn-apply` which does. It sets the reviewer based on who marked the patch as r+. It also updates the date for the changelog entry.