Skip to content

Fix MergeRequest#source_sha when there is no diff

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/14170

Overview

This MR fixes an unhandled Exception when visiting the page of an open Merge Request without diff.

Description

MergeRequest#source_sha is expected to return the sha of the source branch last commit. But when an open Merge Request has no diff (e.g. all commits have already been merged to the target branch), merge_request.source_sha incorrectly returns nil.

This was without consequences before – but since !2217 (merged) was merged (a few days ago), it makes Gitlab::Git::Commit.between raise an "Unexpected nil argument" exception. This can be reproduced when visiting the http://localhost:3000/gitlab-org/gitlab-test/merge_requests/2 page on a fresh local Gitlab setup.

This MR fixes the crash, by making sure that source_sha returns a correct result even when there is no diff available. I also added tests.

@DouweM I believe you wrote most of this code in the first place ; does this looks correct to you, or is there a better way to resolve this issue maybe?

Merge request reports