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 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?
See merge request !3135
Changing filter dropdowns shows loading
Instead of doing a full refresh of the page - i've modified the filterResults method on the Issues object to work for this form as well

Closes#14359
See merge request !3237
Show a notice for diffs that are empty/too large
This builds upon https://gitlab.com/gitlab-org/gitlab_git/merge_requests/72 but will fail until said MR has been merged.
Fixes gitlab-org/gitlab-ce#13912, gitlab-org/gitlab-ce#13644, gitlab-org/gitlab-ce#13557, gitlab-org/gitlab-ce#13267, gitlab-org/gitlab-ce#3906
See merge request !3185
Add space to separate different files in diff
I propose to add some visual separation between files in diff. Originally this separation was removed in 8.0 because of different UI layout. Now when we have white layout back I think it will be better to add some space between files.
- - -
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
See merge request !3275
Removed diverging commit count calculation from Repository#build_cache
Using a repository with 1000 branches the old `Repository#build_cache` method would take around 180 seconds to complete. Without calculating the diverging commit counts this method "only" takes around 60 seconds.
See commit 28cc2413eb5ddf920ce0b5eed803121f8b884754 for more details. This fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/14058
cc @rspeicher
See merge request !3274
Adds small AJAX optimistic functionality to todos.
Fixes#13656 <br/>
A good first step and boring solution. <br/>
Will make ajax call to remove each issue. <br/>
If issue is last in group of issues will refresh page. <br/>
If issues remain in group will remove row with JS. <br/>
Adds loading spinner to button and disables. <br/>
 <br/>
cc @dzaporozhets @JobV @dbalexandre
See merge request !2946
Fix bug causing dropdown to get cut off in project page
closes#14336
### Before


### After

See merge request !3257
Fix inconsistency in the header of issue and merge request pages
closes#13550
# For Issue Page
### Before

### After

# For Merge request Page
### Before

### After

See merge request !3279
Fixed alignment of download dropdown
With the new dropdown CSS - some dropdowns might look a bit odd
## Previously

## Now

See merge request !3245
When calling Repository#build_cache we _don't_ want to build the
diverging commit count cache as doing so can be _very_ slow for
repositories with lots of branches. Because these caches are built
whenever needed (= when actually viewing the list of branches in the web
UI) we can safely remove this code from
Repository#build_cache.