Skip to main content

Submitting merge requests for review

This tutorial aims to show you how to follow basic git workflow and submit changes through Merge Requests for review.

The rudimentary idea behind aims for changes to be present on a separate branch that is supposedly merged into the default branch. Till then changes can be reviewed on Merge Request and additional changes may be made based on the reviews. Once the changes satisfy requirements, the merge request is merged.

Tutorial

Use this tutorial only for bonus assignments made by your tutors or in case you need to make up for the absence.

Step #1 - Starting from the clean repository

In your repository (either locally or on aisa) type git status and check if your repository is clean and you are present on the main branch (master, main or trunk). If you do not know what your default branch is, it is probably master and you should not be on any other branch.

Output of the command should look like this:

aisa$ git status
On branch master # Or main or trunk.
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

In case you are on different branch or there are uncommitted changes, do not continue!!! Clean your repository (commit the changes or discard them), before you continue.

Step #2 - Create new branch

In your repository write command:

aisa$ git checkout -b BRANCH
Switched to a new branch 'BRANCH'

Instead of BRANCH use some reasonable name for the branch. For example if you are working on the seminar from 3rd week, name the branch seminar-03.

Step #3 - Do the assignment

Download the skeleton for the seminar assignment, extract and program. For example if you are working on 3rd seminar, you can do so by:

aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip
aisa$ unzip pb071-seminar-03.zip
# Now you should have directory 'seminar-03'.
aisa$ rm pb071-seminar-03.zip
aisa$ cd seminar-03
# You can work on the assignment.

Step #4 - Commit and upload the changes to GitLab

The same way you add and commit files for the homework assignments, you do for the seminar.

Now you can upload the changes to GitLab. git push is not enough, since repository on GitLab does not know your new branch. You can solve this by adding arguments:

aisa$ git push origin BRANCH
...
remote: To create a merge request for BRANCH, visit:
remote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH
...

In the output you should have a link for creating a merge request. If you see this link, open it and skip next step.

Step #5 - Creating a merge request manually

  1. Open your repository on GitLab.
  2. On the left panel click on Merge Requests.
  3. Click on New Merge Request.
  4. In Source branch select login/pb071 and BRANCH, which you created.
  5. In Target branch select login/pb071 and your default branch you have seen in the output of the first command. (most likely master)
  6. Click on Compare branches and continue.

Step #6 - Set assignees

On the page that is opened, please check at the top that you are creating merge request from your new branch to your default branch (one of master, main or trunk).

Then in the field Assignees set your tutors based on the seminar group. You can use login for a quick look up.

In the end click on Submit merge request.

Step #7 - Return to default branch

Homework assignments can be submitted only from branches specified in the rules for the course. Because of that, before you do anything else, you should switch back to your default branch.

First of all, same as in step #1, check that your repository is clean with git status. For the sake of safety, do not continue without clean repository. Then with command git checkout BRANCH switch to your default branch BRANCH.

If you do not know which branch is your default, try git branch that outputs all branches in your repository. Default branch is typically master, but can be main or trunk.

aisa$ git status
# Check if repository is clean

# If you know, what is your default branch, you can skip next command.
aisa$ git branch
# Find the default branch in the list; should be one of the `master`, `main` or
# `trunk` and you should not have more than one of those.
# In case the list clears the terminal and you cannot see shell prompt, you can
# press `q` to quit the pager.

aisa$ git checkout master

Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html