In September 2016, I attended 5 days Gerrit developer hackathon, in Walldorf, SAP.
As always it was a big pleasure to meet SAP Git/Gerrit hackers in person:
Sasa, Matthias, Michael and Chris.
I finalized my work on extending labels in secondary index to be change owner votes aware. Now it’s possible to use these gerrit queries:
Skip WIP changes, rejected by change owner:
is:open NOT label:Code-Review-2,owner
Skip non reviewable changes, approval by change owner:
is:open NOT label:Code-Review+2,owner
Detect changes, that violates “non-self approval policy”:
label:Code-Review+2,owner
Suggest changes for auto merge: approval by change owner + verify by the bot (assuming default label set: CRVW + VRFY):
project:foo branch:master is:open is:mergeable label:Code-Review+2,owner label:Verified+1,buildbot NOT label:Code-Review-2 NOT label:Verified-1
Dave finalized the work I started on cookie based PolyGerrit/GWT UI switch. With this change it is possible to switch between new and old UI. Given that the pure JavaScript (Polymer based) UI is not ready yet, it is not really a viable option to switch Gerrit site per configuration to the new UI. Switching in the live server, back and forth, makes a lot of sense. In Gerrit footer there is a toggle link “new UI”/”old UI” now. It can be seen on gerrit-review, that is running master. The new feature is going to be available in upcoming 2.14 release.
GWT upgrade from 2.7 to 2.8 was an interesting journey. Gerrit upgraded Jetty to 9 years ago, as the consequence, we have seen classpath collisions caused by GWT using older Jetty version Jetty 8. As an intermediate step, we strip Jetty 8 bits from the gwt-dev.jar artifact and fork some parts of GWT library in Gerrit tree and adapt it to use Jetty 9. It turned out, it wasn’t trivial at all to bump Jetty version to 9 in GWT, because HtmlUnit was still depending on Jetty 8, (more precisely WebSocket part of it). Given that WebSocket module was substantially refactored in Jetty 9 compared to Jetty 8, HtmlUnit must be adapted to this WebSocket refactoring.
So, in the end I’ve implemented this upgrade series in 3 different projects: HTMLUnit, GWT, Gerrit:
- Upgrade WebSocket in HtmlUnit to use Jetty 9
- Upgrade GWT to use Jetty 9 and new HtmlUnit
- Upgrade Gerrit to use GWT 2.8 and revert the fork of parts of GWT adapted to Jetty 9 in Gerrit
The rest of the week I continued to work on Bazel build implementation. In the end of the week, all core plugins can be built with Bazel.
Here is the summary from Sasa on all activities during the Hackathon.
Big thank to The Document Foundation for funding the travel costs for my participation.