Support Akismet spam checking for creation of issues via API
Currently any spam detected by Akismet for non-members via API will
be logged in a separate table in the admin page.
Closes#5612
See merge request !2266
Added dropdown to list all projects on project header
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/4212
When clicking the current project name, it shows a dropdown menu with a list of all projects for that group or user.
When closed:

When open:

cc. @jschatz1
See merge request !2438
This MR simplifies CI permission model:
- read_build: allows to read a list of builds, artifacts and trace
- update_build: allows to cancel and retry builds
- create_build: allows to create builds from gitlab-ci.yml (not yet implemented)
- admin_build: allows to manage triggers, runners and variables
- read_commit_status: allows to read a list of commit statuses (including the overall of builds)
- create_commit_status: allows to create a new commit status using API
Remove all extra methods to manage permission.
Made all controllers to use explicitly the new permissions.
First, the autosize library was being too controlling and removed the
`resize` property from any elements to which it was attached, removing
the drag handle.
Second, we detect when the user manually resizes an autosize textarea,
and then remove the autosize behavior from it and increase its
max-height.
This should allow for the best of both worlds.
Closes#12832
Instead of running ClosingIssueExtractor for every commit in a merge
request we can gather all the commit messages (and the merge request
description), concatenate all this together and then run
ClosingIssueExtractor only once.
The result of this is that MergeRequest#closes_issues is now between
3.5x and 4x faster than the old setup. Using a merge request with 10
commits (each referencing a number of issues to close) this reduced the
call duration from around 200 milliseconds to around 50 milliseconds.
As a result of these changes the Jira related tests for
MergeRequest#closes_issues have been removed. These tests stubbed
Commit#closes_issues meaning that the only code that was really tested
was the call to Array#uniq to filter out duplicate issues. As this code
is no longer used (nor present) the corresponding tests were removed.
Related: gitlab-org/gitlab-ce#12419
Increase the minimum length for commit SHA matching to 7
This is the git default and will help to prevent false positive matches.
Closes#12706
See merge request !2655
Background process note logic for #3948
Quick and dirty way to get *most* of the note processing out of band and into the background. Seeing some pretty nice speed bumps. Keep in mind that doing this in process results in slower and slower responses as more notes are added and more participants exist.
```
without background processing
Completed 200 OK in 627ms (Views: 0.5ms | ActiveRecord: 32.3ms)
Completed 200 OK in 478ms (Views: 0.8ms | ActiveRecord: 28.3ms)
Completed 200 OK in 1107ms (Views: 0.6ms | ActiveRecord: 36.6ms)
with background processing
Completed 200 OK in 108ms (Views: 0.6ms | ActiveRecord: 4.7ms)
Completed 200 OK in 78ms (Views: 0.5ms | ActiveRecord: 4.5ms)
Completed 200 OK in 164ms (Views: 0.5ms | ActiveRecord: 8.3ms)
```
As you can see, speeds are consistent when doing the harder work out of process. I'm not sure the number of sql queries we're saving, but based on the logs alone it's a pretty good amount.
@dzaporozhets @yorickpeterse I would love some input on this.
See merge request !2631
Partially revert "Add IP check against DNSBLs at account sign-up"
This partially reverts 6a5cd3ca - we keep the migration and add a new
migration that reverts it in order to keep migration history intact.
See merge request !2643
Prevent transient Capybara timeouts during feature tests
The problem occurred because asset compilation takes a long time, so
when the asset cache didn't exist and the first test ran, it would often
(randomly) time out during the generation before the actual test even
had a chance to run.
Now we check if the cache exists before the suite runs, and if not, we
manually fire a request to the root URL in order to generate it. This
should allow subsequent tests to use the cached assets.
See merge request !2646
fix syntax error on 2.1 and rubocop on 2.2
Background:
Hashes `{:'key': 'value'}` are not valid in 2.1 but are recommended by Rubocop on 2.2. We only use those when we have a key such as `weird-key`, `weird.key`, etc...
We could disable Rubocop but it wouldn't warn us about the recommended syntax since `Ruby 1.9`: `{key: 'value'}`, which is valid for `Ruby 1.9+`.
Workaround 1 could be disabling `Style/HashSyntax:` in `rubocop.yml`.
Workaround 2 (tried in this MR) is to trick Rubocop using `.to_sym` which is effectively the same as adding the `:`. This would allow to keep the warning in place.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/12801
See merge request !2637
The problem occurred because asset compilation takes a long time, so
when the asset cache didn't exist and the first test ran, it would often
(randomly) time out during the generation before the actual test even
had a chance to run.
Now we check if the cache exists before the suite runs, and if not, we
manually fire a request to the root URL in order to generate it. This
should allow subsequent tests to use the cached assets.