* upstream/master: (141 commits)
Log mv_namespace parameters
Remove header ids from University docs
Added test that checks the correct select box is there for the LFS enabled setting.
Simplify copy on "Create a new list" dropdown in Issue Boards
Fix `LFS enabled` select box.
Use Commit#author so we share logic and cache
Move admin abuse report spinach test to rspec
fixes non-retina shadow and browser zoom issue
Use default `closest` if available!
Adds polyfill for CustomEvent
Move abuse report spinach test to rspec
Add support of Chrome/Chromium in requirements.md
Fixed dragging issues on issue boards
Grapify the sidekiq metrics API
Add nested groups support to the routing
Correctly determine mergeability of MR with no discussions
API: Add endpoint to delete a group share
Add a starting date to milestones
Update ProjectTeam#fetch_members to use project authorizations
Update ProjectTeam#max_member_access_for_user_ids to use project authorizations
...
If `source_branch` option is passed, and target branch cannot be found,
`Repository#update_branch_with_hooks` would try to create a new branch
from `source_branch`.
This way, we could make changes in the new branch while only firing
the hooks once for the changes. Previously, we can only create a new
branch first then make changes to the new branch, firing hooks twice.
This behaviour is bad for CI.
Fixes#7237
Currently, our procedure for adding a commit requires us to execute `CreateBranchService` before file creation.
It's OK, but also we do execute `git hooks` (the `PostReceive` sidekiq job) as part of this process.
However, this hook is execute before the file is actually committed, so the ref is updated.
Secondly, we do execute a `git hooks` after committing file and updating ref.
This results in duplicate `PostReceive` jobs, where the first one is completely invalid.
This change makes the branch creation, something that is intermediate step of bigger process (file creation or update, commit cherry pick or revert) to not execute git hooks.
Similar to 423d2d6, except duplicates occurred only if a Web service (e.g. Slack) were
configured.
When deleting a branch, this is what was happening:
1. DeleteBranchService calls execute_hooks and execute_services
2. The call to repository.rm_branch triggers the GitHooksService.
3. This, in turn, calls GitPushService and then calls the same hooks/services again.
5145706 now makes it no longer necessary for DeleteBranchService and CreateBranchService to execute
the branch hooks/services. Note that tags behave differently in GitTagPushService and GitPushService
is not called.
Closes#10330
When deleting a branch, this is what was happening:
1. DeleteBranchService calls EventCreateService and creates an event.
2. The call to repository.rm_branch triggers the GitHooksService.
3. This, in turn, calls GitPushService and then calls EventCreateService again.
5145706c now makes it no longer necessary for DeleteBranchService and CreateBranchService to create an event.
Closes#4304
Automatically fork a project when not allowed to edit a file.
Fixes#3215.
To do:
- [ ] Add tests
-----
## "Edit" button on file in a project the user does NOT have write access to
![edit_file](/uploads/7602157420768aef483a6586bba2d164/edit_file.png)
## Clicking will automatically create a fork
![during_fork](/uploads/32f4f5dff9f24ea99522000b0bf881c5/during_fork.png)
## When the fork has been created, the user is returned to the edit page on the original project with a notice
![edit_notice](/uploads/94ed1319404370ff1e9c0d672fb41e03/edit_notice.png)
## The user cannot change the target branch and is informed that editing will start an MR
![edit_footer](/uploads/4da68d4795c7177e575b7c434d16eeae/edit_footer.png)
## Hitting "Commit changes" will commit and start an MR from my fork to the origin project
![Screen_Shot_2015-12-17_at_23.38.08](/uploads/d777a4db6f38a5a1be84031694465bc1/Screen_Shot_2015-12-17_at_23.38.08.png)
-----
## "Create file, "Upload file" and "New directory" buttons in a project the user does NOT have write access to
![new_directory](/uploads/72f556248f30d6652523bbb4be01b3e0/new_directory.png)
## Clicking any of these options will automatically create a fork
![during_fork](/uploads/32f4f5dff9f24ea99522000b0bf881c5/during_fork.png)
## When the fork has been created, the user is returned to the tree page on the original project with a notice
![new_directory_notice](/uploads/a1a3e11308ae0e8f0913fae6813a37ed/new_directory_notice.png)
## Clicking "New directory" again will show the modal. The user cannot change the target branch and is informed that editing will start an MR
![new_dir](/uploads/99ca8cbfb2f70603e352b3fdf67b6281/new_dir.png)
## Hitting "Create directory" will commit and start an MR from my fork to the origin project
![Screen_Shot_2015-12-17_at_23.39.19](/uploads/3713d0235abf831361b803a6198c5bc1/Screen_Shot_2015-12-17_at_23.39.19.png)
cc @dzaporozhets @skyruler
See merge request !2145