===============
Gerrit Workflow
===============

KUnit can refer both to the unit testing code within the Linux kernel and to
the project as a whole, which includes some other supporting code. The meaning
is usually clear when used in context.

With that said, KUnit, as a project, is made up of several repositories. As
mentioned elsewhere, the actual KUnit unit testing code is in the upstream
Linux kernel. All our other code is in Gerrit. For an introduction to Gerrit
(with a high level overview of git), see
https://gerrit-review.googlesource.com/Documentation/intro-user.html. For
detailed introduction to git, see https://try.github.io.

Starting from Scratch
=====================

This section describes how to start a change from scratch.

Cloning a repo for the first time
---------------------------------

If you have not done so yet, clone the repository you want to make changes to.
For example:

.. code-block:: bash

   git clone https://kunit.googlesource.com/prow-presubmit

Checkout the desired branch
---------------------------

Checkout the branch on which you want to make changes to. For example:

.. code-block:: bash

   git checkout master

Make sure your branch is up to date
-----------------------------------

If you have not done so in a while, you will need to update your repo and
branches. Your remote references can be updated with the ``fetch`` command. For
example:

.. code-block:: bash

   git fetch origin

where ``origin`` it the name of the KUnit remote, by default ``origin`` is the
name of the repository that was cloned.

Now that you have updated your remote references, you need to update the local
branch you will be working on. If this branch is only local to your repository,
you may need to rebase it on the remote branch you are trying to get your
changes into (in this case, you would already have changes underway. See
:ref:`updating-changes` for more information.); here we assume that is not the case.
Update your branch with the `pull` command. For example:

.. code-block:: bash

   git pull origin -ff

``-ff`` forces git not to merge upstream changes into your branch. This is
important as we, the KUnit project, do not want merge commits in our git repos.
This command will fail if you have local changes.

Making a change
---------------

Once you have made a change, that you are happy with and would like to send up
for review you first need to ``commit`` the change. For example:

.. code-block:: bash

   git add path/to/a/file/you/modified
   git add path/to/a/different/file/you/changed
   git commit

A git commit should be a logical, bite-size change that is easy for your
reviewer to understand.

Your commit message should have a:

- **subject** - line on top that provides a vague idea of what you are doing.
- **body** - which describes in more detail what you are doing.

The bottome of your commit message should have:

- ``Change-Id`` - see
  https://gerrit-review.googlesource.com/Documentation/user-changeid.html for
  more information.
- ``Signed-off-by`` - see
  https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin

Sending changes for review
--------------------------

Now that you are happy with your commits, you need to send them for review.
This is done by pushing them to Gerrit with the ``push`` command. For example,
let's say you want your changes to be submitted on ``master``
branch, and ``origin`` is the prow-presubmit repo:

.. code-block:: bash

   git push -u origin HEAD:refs/for/master

If pushing succeeds, Gerrit will respond by printing out the link where you can find the review.

.. _updating-changes:

Updating Existing Changes
=========================

This section describes how to update your or another user's changes.

Checking out someone else's changes
-----------------------------------

Gerrit allows users to take over changes made by other users. This can be done
by checking out a change that is currently under review (and then pushing
modified versions of those changes). Let's say there is a change at
https://kunit-review.googlesource.com/c/prow-presubmit/+/2569; you can checkout
this change and its dependencies by clicking on the download button; it will
provide you several options, the first option provides a git command that you
can copy to your command line and run, such as:

.. code-block:: bash

   git fetch "https://kunit.googlesource.com/prow-presubmit" refs/changes/69/2569/1 && git checkout FETCH_HEAD

.. tip::
   You can also use this to checkout changes that you have misplaced or lost.

Updating changes
----------------

Once you have checked out the changes that you need to update, you may want to
update them, as the branch you are looking to submit to may have progressed;
this can be accomplished by rebasing against the branch you want to submit to.
For example:

.. code-block:: bash

   git rebase master

Now you need to modify the commits to address reviewer's comments, or maybe you
realized that you forgot something that should be in an earlier commit.
Modifying commits may be accomplished with interactive rebase. Interactive
rebase is a very powerful git command and is discussed in some detail here:
https://dev.to/blakedeboer/beginners-guide-to-interactive-rebasing-1ob.

You might start an interactive rebase with:

.. code-block:: bash

   git rebase -i master

.. note::
   Only modify commits that are actually under review; changing commits that
   have already been checked in will cause Gerrit to yell at you.

Sending changes for review (again)
----------------------------------

All you need to do to update your changes on Gerrit under review is to push
your modified commits to the same branch that you would have as if you were
pushing for the first time.

For example, let's say you want to submit your changes to ``master``; you would
then

.. code-block:: bash

   git push -u origin HEAD:refs/for/master

You may wonder how Gerrit knows to replace the old commits at this location
with the ones that you modified; the secret is the ``Change-Id``. **A Change-Id
should almost never be changed when updating a commit**; it tells Gerrit that
the commit is the same commit as before even though everything else may have
changed about the commit (including the commit hash).
