Soft delete issuables
Fixes#2489
What still needs to happen: research on the indexes, the gem suggests a [lot of changes](https://github.com/rubysherpas/paranoia#about-indexes) though this is probably a good idea to discuss and I'm unsure on the impact of an omnibus upgrade as I suspect creating about 10 new indexes has a large impact on the downtime.
TODO:
- [x] Also group owners can ***soft*** delete
- [x] Button should be hidden
See merge request !2982
CI: Add 'triggers' keyword to 'only' and 'except' lists to allow control over when triggers cause builds to run
Currently, the `only` and `except` keywords in `.gitlab-ci.yml` only accept ref names or the special `branches` and `tags` keywords. However, these are primarily useful when controlling how repository activity affects the creation of builds. In my case, instead of building on every commit, I'd like to use the following logic:
- If the repository is tagged, do a build.
- Any other normal commits should not cause a build.
- If a build is triggered via the API, always create one for the specified ref.
From what I can tell, this isn't possible via the existing YAML syntax. In this MR, I introduce a new keyword `triggers` that goes along with `branches` and `tags`. I can implement the logic above using the following job configuration:
```yaml
only:
- tags
- triggers
```
I updated the tests and documentation to reflect this and everything seems to pass.
See merge request !3230
Follow the CSS Style Guide rules for using shorthand where possible.
Fixes violations of the Shorthand rule. All of these were done manually and I reviewed each change to verify, so they should all be right.
Discussed in #14299.
cc: @jschatz1
See merge request !3313
Use gitlab-workhorse 0.7.1
A small extra defense against interrupted git raw responses. Nice to
have in 8.6 because we introduce /raw/ caching; it would be
unfortunate if incorrect (truncated) responses got cached.
See merge request !3330
Improve performance of viewing individual issues
This MR does two things:
1. `Issue#related_branches` no longer performs Git operations that aren't needed
2. The output of `Repository#exists?` is now cached and flushed properly
Combined these two changes should further cut down the amount of Git operations performed when viewing individual issues (and possibly other pages).
See merge request !3296
Ability to move issue to another project
Tasks:
- [x] Create scaffold of service that will move issue to another project.
- [x] Close old issue, add system note about moving issue to a new project.
- [x] Create a new issue, add system note about issue being moved from old project.
- [x] Check if issue can be moved to another project before executing service
- [x] Check permissions when moving an issue (`:admin_issue` ability)
- [x] Display select box for a new project when editing an issue
- [x] Show only projects that issue can be moved into in that select box
- [x] Add project select handler, helper and some permission filters to it
- [x] Preserve as much information as possible, including author
- [x] Prepare mechanisms that unfolds local references in issue description
- [x] Rewrite issue description with references unfolding and add some specs for it
- [x] Rewrite all system notes and comments attached to issue that is being moved
- [x] Update `Label` so that is was able to create cross reference labels (separate MR)
- [x] Add notifications about moving issue to another project
- [x] Display confirmation alert/message when issue move has been requested
- [x] Make it possible to undo selecting project where issue will be moved to
- [x] Add column to issue, that will indicate if it has been moved to another project
- [x] Do not allow to move issue that has been already moved
- [x] Write top-to-bottom feature spec in RSpec instead of Spinach
UI:


Closes#3024
See merge request !2831
Easily (un)mark merge request as WIP using link
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/3768 and https://gitlab.com/gitlab-org/gitlab-ce/issues/3516
## Link to add `WIP` prefix (underline is visible because of hover)

## Link to remove `WIP` prefix

## System note after WIP is added

## Widget with link to remove WIP

## Flash after WIP is removed

## System note after WIP is removed

## Widget when current user cannot remove the WIP prefix

cc @creamzy
See merge request !3006
Expand the issuable sidebar when coming back from the Changes tab
Unless the user explicitly requested the collapsed sidebar.
Fixes: #14353
See merge request !3256
#to_branch_name now uses the iid as postfix
Given the branch name 'mep-mep' with an iid being 1,
the current way, master's way, would yield a branch name of
1-mep-mep. The problem for larger projects however would be that
a developer might forget what iid the issue was.
When this developer would try to tab complete it would:
- Or result in 20+ branches possibly
- Or start with the wrong digit, try again with digit++
- Would see 20 branches, repeat
Thus the obvious way of solving this is letting the dev tab complete
on the issue title, which is easier to remember.
@DouweM Should this be labelled `pick-in-master`?
See merge request !3308
Fix spacing below edit note form
Also changed to allow the CSS to decide what should be hidden when editing
Thanks @JobV for having eagle eyes 😜
See merge request !3306
Fixed issue with filtered data persisting when dropdown closed

Closes#14401
See merge request !3302
Add label description in tooltip to labels in issue index and sidebar
The tooltip can get quite big, but it’s so useful to inform people about what these labels mean
new


@JobV writes on Slack:
> yeah I think it’s better than not, but I’d have to try it 😃
>
> cautious yes, revert if it’s annoying 😉
See merge request !3124
Add information about `image` and `services` field at `job` level in the `.gitlab-ci.yml` documentation
Fixes#14366
/cc @tmaczukin @ayufan @axil
See merge request !3277
Trigger a todo for mentions on commits page
Closes#14006
* Screenshot:

See merge request !3262
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 an issue when the target branch of a MR had been deleted
Before displaying the "diverged commits" note, we're checking if the MR
is open, but we should check if it's mergeable instead because this
check ensure the source and target branches exist.
This was introduced by !2217 and fixes#14388.
See merge request !3294
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
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
Add avatar to issue and MR pages header
closes#14395
# For Issues
### Before

### After

# For Merge Request
### Before

### After

See merge request !3301
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
Improved issue sidebar
Updated the spacing throughout the sidebar so that it fits better on smaller screens. Also adds a more participants button to show any other participants after the first row.
Closes#13353
See merge request !3097
Dashboard labels
Previously because there were no JSON endpoint for labels or milestones
it was fetching HTML and parsing that. This is wrong.
It now fetches from a JSON endpoint.
This also fixes the dashboard/issues page not loading labels or
milestones as the path used to be only for a single project. So instead
I have created a endpoint for labels & milestones JSON on dashboard.
See merge request !3253
Add note in upgrade guide to choose the correct version tag
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/3448
@rspeicher I'm assigning to you since as a release manager you should know better. Let's keep it in this guide for now and then start copying it in the future ones.
See merge request !2284
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