This page provides some information to help contributors using the new Gerrit review system for TF-A patches submission. It is not meant to be an exhaustive user guide but instead just illustrates the [[https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/about/contributing.rst | new TF-A Contribution Guidelines]].
On Github, contributions used to be submitted using pull requests. On www.trustedfirmware.org, we are using the Gerrit review tool.
First of all, you should clone the repository from Gerrit as documented on [[https://review.trustedfirmware.org/admin/repos/TF-A%2Ftrusted-firmware-a | this page]] (we recommend the "//Clone with commit-msg hook//" method). When you are ready to post a patch (or a series of patches) for review, you should use a git command similar to the following one:
```
$ git push origin HEAD:refs/for/integration/my-topic-name
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 559 bytes | 0 bytes/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: New Changes:
remote: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/800 Fix a comment in SP_MIN Makefile
To ssh://sandrine-bailleux-arm@review.trustedfirmware.org:29418/TF-A/trusted-firmware-a
* [new branch] HEAD -> refs/for/integration/my-topic-name
```
The `refs/for/integration/my-topic-name` is a "magic" refspec recognized by Gerrit. It means that the patch should target the `integration` branch and belongs to the `my-topic-name` set of changes.
This command should make your patch(es) appear on the [[https://review.trustedfirmware.org/#/projects/TF-A/trusted-firmware-a,dashboards/site:main | TF-A Gerrit review dashboard]] in the `Open Published Patches` section: (**Note**: If this link does not work for you (HTTP 404 error code), see the //Troubleshooting// section below)
{F29817, size=full}
Your patch(es) will need to go through code review, IP review and automated testing. If it does not have all approvals, it cannot be merged. The status of the patch is indicated at the top, near the change number. In this example, `Needs IP-Review label`.
{F29819, size=full}
Once your patch has received all necessary approvals, its status will change to `Ready to submit`:
{F29821, size=full}
It is then ready to be merged into the integration branch by a maintainer.
= Troubleshooting =
Gerrit supports 2 user interfaces: the classic one and the new [[https://www.gerritcodereview.com/dev-polygerrit.html | PolyGerrit ]] one. The latter is a beta feature at the moment. The 2 UIs differ in a number of things, for example they seem to use different base URLs for dashboards. This page has been written with the classic UI in mind so we recommend switching to that if you want to follow the instructions on this page.
How do you know whether you're using the classic or PolyGerrit UI? If the website interface looks like the following screenshot then you're using the PolyGerrit UI. You can switch to the classic one by clicking on the `Switch to Old UI` link at the bottom of the page:
{F29823, size=full}
If you want to view the TF-A Gerrit dashboard using the PolyGerrit UI nonetheless, it is accessible from [[ https://review.trustedfirmware.org/p/TF-A/trusted-firmware-a/+/dashboard/site:main | this URL ]].