Now that Repository#raw_repository no longer sets the autocrlf option it
will also no longer raise any NoRepository errors since it doesn't
access Rugged any more. This also means that Repository#exists? can't
simply return the raw repository as this is no indication of whether or
not the repository actually exists (besides returning a non boolean is
weird in the first place).
To solve this problem Repository#exists? now properly checks if the
repository exists and returns true/false instead of a
Gitlab::Git::Repository or nil object.
Setting the "autocrlf" Git option is an overkill since it's rarely
actually needed. More importantly, it has quite the impact on
performance (see gitlab-org/gitlab-ce#13457 for more information).
By setting "autocrlf" when creating or updating files we guarantee the
option is always set properly when we actually need it _without_
introducing overhead for requests that have nothing to do with this
option.
Fixesgitlab-org/gitlab-ce#13457
Reduce code complexity on GitPushService#execute
Code complexity for gitlab-ce after this has been refactored:
```
27.3: GitPushService#execute
```
This still needs to be merged into `gitlab-ee` presumably with conflicts... Perhaps we should create another issue for doing that?
I left the code sort of similar to what it was... If I could, I would have refactored most of the code into separate classes, etc. as it breaks probably all SOLID principles.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/13327
See merge request !2784
Add ability to see and sort on vote count from Issues and MR lists
Fixes#3763
* Sort options

* Most popular

* Least popular

See merge request !2781
Prevents floated button group on issues view
Issue #13359

See merge request !2826
This ensures that _all_ caches (including any caches normally only
flushed under certain conditions) are flushed whenever a project is
removed. Because cache keys are based on project namespaces (excluding
IDs) not doing so could result in a newly created project re-using old
caches (if the project was re-created using the same name).
This ensures the caches for Repository#empty? and
Repository#has_visible_content? are flushed after a repository has been
imported or forked.
Fixesgitlab-org/gitlab-ce#13505
Sidebar fixes
Fixes#13215
* when editing a dropdown, but not changing anything you end up in an ugly state
* the hover-over state for the subscribe and other buttons are veeery subtle
* the collapse button needs some sort of hover-over state
* the reference gets shortened. It always got shortened. Not an issue with this in particular.
* the minimized sidebar is not functional. The copy button doesn't do anything
* looks all funky in safari (not for me)
See merge request !2736
Fix the "x of y" displayed at the top of Issuables' sidebar
1. We now display the index of the current issuable among all its project's
issuables, of the same type and with the same state.
1. Also, refactored a bit the Issuable helpers into a new `IssuablesHelper`
module.
1. Added acceptance specs for the sidebar counter.
Note: I didn't add a CHANGELOG item since it's a bug fix for an unreleased version.
Fixes#13356.
See merge request !2818
Eager-load image blob data in diffs
Since gitlab_git 8.0, blob data are lazy-loaded so we have to call
`blob.load_all_data!(repo)` to eager-load them.
Fixes#13458.
/cc @jacobvosmaer @dblessing @rspeicher
### New image in commit view
#### Before

#### After

### Replaced image in commit view
#### Before

#### After

### Deleted image in commit view
#### Before

#### After

### Image diff in merge request diff view
#### Before

#### After

See merge request !2830