WebKit's commit-queue is a webkit-patch? command which is run on the commit server (maintained by Eric Seidel) and provides a way for contributors without commit privileges to get their changes into WebKit.
Commit Queue Process
- Contributer set "commit-queue=?" on their patch.
- Committer sets "commit-queue=+" in response.
- commit-queue polls bugzilla for the list of cq+'d patches, finding one it runs webkit-patch land-from-bug on the bug in question.
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 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: http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json
Q: How long until a patch lands after I set commit-queue+?
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 the WebKit Commit Bot address in the bug. There are outstanding bugs about making the commit bot's messages more clear.
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.
commit-queue bugs: https://bugs.webkit.org/buglist.cgi?quicksearch=commit-queue
webkit-patch bugs: https://bugs.webkit.org/buglist.cgi?quicksearch=webkit-patch
Q: How can I see what's in the commit-queue?
webkit-patch bugs-to-commit is how the commit-queue checks. That will print out any pending bugs.
Q: What checks does commit-queue do before landing?
Everything webkit-patch land-from-bug does. Which is 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, email@example.com 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?
Yes. Any committer could run the commit queue. webkit-patch commit-queue The commit queue is not designed to have more than one copy run at a time though.
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.