Add option to mirror an upstream repository.
Closes internal https://dev.gitlab.org/gitlab/gitlab-ee/issues/279
Depends on gitlab-org/gitlab-shell!29
To do:
- [x] Decide on what user should be the author of the activity feed events. The initial project creator perhaps? That makes sense for personal projects, but less so for group projects, where it's even possible that the creator has since left the team.
- [x] Write specs!
- [x] Write documentation
- [x] Port back relevant commits to CE: gitlab-org/gitlab-ce!1822
----
## Mirror status on project homepage

## Settings navigation item

## Mirroring settings

## Activity feed with new "pushes" (mirror updates)

I have yet to decide on what user should be the author of these events. The initial project creator perhaps? That makes sense for personal projects, but less so for group projects, where it's even possible that the creator has since left the team.
## Warning that branch has diverged from upstream

## Commits heading after failed update

Link send user to the mirroring settings if they are a project admin.
## Mirroring settings after failed update

## New project page

## Import form after failed import
(Screenshot outdated)

Shown when the initial import of a project fails, not when an update of an existing project fails.
cc @dzaporozhets @sytses @JobV
See merge request !51
- Offloads uploading to GitLab Workhorse
- Use /authorize request for fast uploading
- Added backup recipes for artifacts
- Support download acceleration using X-Sendfile
Enable shared runners for all new projects
This adds Admin Setting option to enable shared runners for all new projects, and by default it is set to true.
/cc @dzaporozhets @sytses
See merge request !1738
This adds indexes for the following columns:
* notes.line_code
* ci_projects.gitlab_id
* ci_projects.shared_runners_enabled
* ci_builds.type
* ci_builds.status
Performance is improved in two steps:
1. On PostgreSQL an expression index is used for checking lower(email)
and lower(username).
2. The check to determine if we're searching for a username or Email is
moved to Ruby. Thanks to @haynes for suggesting and writing the
initial implementation of this.
Moving the check to Ruby makes this method an additional 1.5 times
faster compared to doing the check in the SQL query.
With performance being improved I've now also tweaked the amount of
iterations required by the User.by_login benchmark. This method now runs
between 900 and 1000 iterations per second.
Fixes GDK issue where repos would not be imported properly
Seed-Fu runs this entire fixture in a transaction, so the `after_commit`
hook won't run until after the fixture is loaded. That is too late
since the Sidekiq::Testing block has already exited. Force clearing
the `after_commit` queue to ensure the job is run now.
See: gitlab-org/gitlab-development-kit#58
See merge request !1513
By using a JOIN we can remove the need for using 2 separate queries to
find a project by its namespace. Combined with an index (only needed for
PostgreSQL) this reduces the query time from ~245 ms (~520 ms for the
first call) down to roughly 10 ms (~15 ms for the first call).
Seed-Fu runs this entire fixture in a transaction, so the `after_commit`
hook won't run until after the fixture is loaded. That is too late
since the Sidekiq::Testing block has already exited. Force clearing
the `after_commit` queue to ensure the job is run now.
See: gitlab-org/gitlab-development-kit#58