Gerrit's interface can be difficult to navigate for those new to the tool. The following documentation can help newcomers learn how to navigate Gerrit.
To view all projects in gerrit old ui, go to Projects > List.
To view all projects in gerrit new ui, go to More > Projects.
Clicking a project name in that list doesn't give you much useful information, but then you can go to Project > Branches and click the diffusion link for the "master" branch. Clicking a file name will show you its content.
The core MediaWiki source code is in project "mediawiki/core", browse away. In general you want to view the master branch. If you want to look at the code for the version of MediaWiki or an extension deployed on some wiki, visit that wiki's Special:Version page and look for a corresponding branch or commit.
The search bar is powerful, but requires keywords. Here you can find the list of these keywords.
If you enter the e-mail address of a Gerrit participant, you'll see a list of his or her activity.
Usually the underlying code can be found through a "diffusion" link which will take you to Phabricator's Diffusion. These links aren't prominently displayed, though. You can find links to Diffusion on every change, next to the list of files in a patch set. You can also access Diffusion directly for each project's code repository: Go to Diffusion and choose the repository from the list, or click "Edit Query" and enter the project's name in the "Name Contains" field.
- Updated daily
- Open changesets by owner
- Changesets by status
- Oldest open changesets
- Merged changesets wed to unresolved bugs
- Changesets by project
- Open changesets by newbie owner
- Code review activity
- Changesets by owner
- Simple code review stats, all time and last month (based on refs/notes/review, containing only CodeReview votes for the last patchset of each commit)
- Gerrit API: https://gerrit.wikimedia.org/r/Documentation/rest-api.html ; the endpoints are located at https://gerrit.wikimedia.org/r/..., e.g. https://gerrit.wikimedia.org/r/projects/mediawiki%2Fcore/branches.
- bugzilla:45090 – some useful notes in the comments here
- valhallasw's bot: https://github.com/valhallasw/gerrit-reviewer-bot
- XSSI wtf
- Scripts and other reports
- Merged changesets attached to unresolved bugs (outdated as Bugzilla has been replaced by Phabricator)
You can run queries against gerrit from the command line.
You connect over ssh to execute commands of the form
gerrit query ' query parameters ' on the gerrit host.
You can use
gerrit query to get a list of commits based on several parameters, see documentation; search operators are the same as in the web interface, with some differences and more sugar.
It requires a developer account.
This will give a list of unreviewed commits:
ssh -p 29418 <username>@gerrit.wikimedia.org gerrit query 'status:open project:^mediawiki/.* AND NOT label:Code-Review<=-1'
To show only the count of unreviewed commits, append
| grep rowCount.
For a list of commits to all MediaWiki repos which have been, or need to be, reviewed by a user (Brion in this example):
ssh -p 29418 <username>@gerrit.wikimedia.org gerrit query 'project:^mediawiki/.* reviewer:brion AND NOT owner:L10n-bot'
it excludes the L10n-bot which sometimes alters the results.
You can define a "review" shortcut in your ssh configuration so that you don't have to enter the full
firstname.lastname@example.org each time, see Gerrit/Advanced usage#Setup SSH shortcut (optional)
Counts by user
To get more lists/counts, you can use a simple for loop and grep in a bash script, like this:
#!/bin/bash for name in aschulz addshorewiki krenair bjorsch aude.wiki arichards matma.rex bawolff+wn brion csteipp roan cdentinger chadh dcausse daniel.kinzler dpatrick abaso florian.schmidt.stargatewissen fomafix gwicke glaisher.wiki hashar hoo codereview jackmcbarn jan.wikimedia rkaldari krinklemail legoktm liangent mah maxsem.wiki glaser mvolz niklas.laxstrom nuria ori tylerromeo phedenskog platonides pleasestand raimond.spekking reedy robinp.1273 siebrand sucheta.ghoshal at.light hartman.wiki thiemo.maettig tstarling tjones tparscal umherirrender_de.wp vasilvv agarrett yuriastrakhan tfinc do echo $name is owner: and requested reviewer: of this many MediaWiki changesets: ; ssh -p 29418 <username>@gerrit.wikimedia.org gerrit query "project:^mediawiki/.* owner:$name AND NOT reviewer:$name" | grep rowCount ; ssh -p 29418 <username>@gerrit.wikimedia.org gerrit query "project:^mediawiki/.* status:open reviewer:$name AND NOT owner:$name AND NOT owner:L10n-bot AND NOT label:Code-Review<=-1" | grep rowCount ; echo ; done
In the example we generate some code commits and code review stats for the "mediawiki" group members (by their email; may change; excluding self-merges which are by definition not CR and also most likely minor commits); the output is something like this.
Full-text search on commit messages and commit contents is possible on external services, such as Gmane or MarkMail (example).
If you need to ask documentation or other info about a system message (e.g. for translatewiki:Support), it's not that easy to find the correct person. Gerrit and gitweb are useless to this purpose, but here's what you can do:
Look who introduced or modified the message in core: go to your checkout of the code and do, for instance:
core$ git blame languages/messages/MessagesEn.php | grep clearyourcache 11c51c3f languages/messages/MessagesEn.php (Leo Koppelkamm 2011-07-07 15:59:42 +0000 1377) 'clearyourcache' => "'''Note:''' After saving, you may have to bypass your browser's cache to see the changes.
To find the previous committer:
core$ git blame 11c51c3f^ languages/messages/MessagesEn.php | grep clearyourcache 8cf03e76 languages/messages/MessagesEn.php (Siebrand Mazeland 2010-01-16 17:44:18 +0000 1320) 'clearyourcache' => "'''Note: After saving, you may have to bypass your browser's cache to see the changes.'''
With an extension you have to do the same on its i18n template and restrict to the first result (English); if you don't know what extension or what file to check, you'll have to
grep -r or
ack the whole directory (git-blame'ing all the repositories at once is not trivially possible, you'd need to use a script or some
find magic to walk through the directories and set the git path).
extensions/MoodBar$ git blame MoodBar.i18n.php | grep -m 1 moodbar-what-content e2ceb863 MoodBar.i18n.php (Siebrand Mazeland 2011-08-02 10:20:49 +0000 47) 'moodbar-what-content' => 'This feature is designed to help the community understand the experience of people editing the site.
Now, at last, you have the hash for the change and you can look for it on gerrit or, if it's too old/not in git review, you can use
git show to get contact info.
Otherwise, if not the official maintainer (from the extension's page or Developers/Maintainers), a safe bet might be the most (recently) active dev of the extension: go to its repository and get a list of the authors with most commits and their email addresses (@users.mediawiki.org are fake addresses):
extensions/MoodBar$ git shortlog -se 1 Aaron Schulz <email@example.com> 10 Alexandre Emsenhuber <firstname.lastname@example.org> [...]
Of course you can as well file a bug on Phabricator (if there's the correct project), or on the talk page of the extension or of its maintainer (if the wiki is up to date) and just wait...