GitLab/Workflows

= Making a GitLab Merge Request =

GitLab is a code hosting, review, and continuous integration platform.

We're running a community consultation on moving from Gerrit to GitLab for Wikimedia code review.

This is a tutorial which explains how to use our trial GitLab instance for Wikimedia development. Depending on the result of the consultation, it may become a reference for production use.

Register an account on gitlab-test
Accounts on the test instance are not currently tied to Wikimedia developer accounts. Visit gitlab-test.wmcloud.org/users/sign_in to register.

Add an SSH key
Visit the SSH settings in your profile and add a public key. See the GitLab documentation for more details on this process.

Create a branch
Use the convention :

Make your changes
Write some code and save your changes.

Stage and commit your changes
Let's say you've edited the  in. You should be able to see this using :

Stage the file and commit:

You should now be able to see this commit in the log:

Fork the repository
If you don't have developer-level permissions on the project you'd like to contribute to, you'll first need to copy the repository to your own account. This is known as "forking". Visit the repository page, for example gitlab-test.wmcloud.org/mediawiki/core, and click "Fork" in the upper righthand corner.

Next, add a remote for your fork:

If you've done this successfully, it should show up in your remotes:

Push your commit to GitLab
If you have commit access, you can push directly to a branch on the origin with.

If you're using a fork, push instead to the remote you added above with.

Create a Merge Request on GitLab
You may notice that GitLab responded to the push with a link to create a new merge request from your branch. You can follow that link directly, or visit the trial GitLab instance, navigate to the branch list for the repository, and click the "Merge request" button in the listing.



If your branch is on a fork under your user account, remember to look there instead of on the origin repo.