Redesign navigation for group pages
Part of #14838. This MR targets on desktop version. Mobile version improvements will be in separate merge request
See merge request !3980
Auto-set title for branches created from issues
This sets the title for a new MR to 'Resolves "$issue-title"' when:
- The source branch for the MR begins with a value iid.
- The MR has more than one commit in its diff (if there's one commit, keep using the commit's first line).
- The iid does not point to a confidential issue.
Single commit:

Multiple commits:

Confidential issue:

cc @DouweM @zj
Closes#14564
See merge request !3966
Use outer join for issues ordering by milestones due.
This MR contains an implementation for Solution 1 suggested in #14183
Ordering by Milestone due sooner/later ("milestone sort") filters issues without a milestone, which can let users feel like disappearing issues without a milestone.
See merge request !3872
If a branch starts with an issue's IID, followed by a hyphen, the
description will be updated to say that is closes the issue. This also
updates the title of the merge request to 'Resolves "$issue-title"', as
long as:
- There is more than one commit in the merge request (if there is only
one commit, the commit's title will be used as before)
- The issue's IID is valid for the project
Add note to requirements doc on swap recommendation, and ensuring enough available memory.
Called out as a result of 2GB RAM DO droplets not being enough to run backups on without adding a swap file. See: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1267
cc\ @stanhu @axil
See merge request !4060
Previously this method would directly receive the output of tag_name().
This method could either return a String or nil. In the previous setup
this would somehow magically work but because Rugged::TagCollection#[]
doesn't accept nil values it started to fail.
To work around this the elsif in change_access_check() assigns the
result of tag_name() to a local and then _only_ calls protected_tag?()
if the tag name is not nil. The extra parenthesis are put in place to
ensure that things are parsed correctly, without these the code would be
parsed as follows:
elsif tag_ref = (tag_name(ref) && protected_tag(tag_ref))
During runtime this would basically resolve to:
elsif tag_ref = (tag_name(ref) && protected_tag(nil))
This is because when you refer to the variable you're assigning _in_ the
assignment Ruby returns nil instead of raising an error.
Fix the line code when importing PR review comments from GitHub
Pull Request Review Comments are comments on a portion of the unified diff.
Closes#17205
See merge request !4010
Merge request widget displays TeamCity build state and code coverage correctly again
## What does this MR do?
This MR contains a fix for a regression introduced in `8.7`. In former version, the TeamCity build status was always displayed correctly. In `8.7` the build state is still checked, but the UI is not updated correctly any longer.
## Are there points in the code the reviewer needs to double check?
The changes are quite simple, so please simply double check them.
## Why was this MR needed?
This MR is needed to make the TeamCity build status working again.
## What are the relevant issue numbers?
#17080
See merge request !3998
Use `number_to_human_size` helper to show repository size
This will intelligently format large repository sizes in GBs (or,
shudder, TBs).
Also, removes `rescue` clause from `repository_size` helper.
The repository size has since become calculated (and cached)
more intelligently, and this should no longer be necessary.
See merge request !4047