Improve merge requests
- [x] Fetch merge request refs by IID
- [x] Ability to fetch any merge request
- [x] Link commits and diffs in merge request to target project
- [x] Improve merge request UI and command line instructions
- [x] Check merge request widget loading test coverage double
See merge request !1115
This custom formatter for rouge is needed to generate HTML output
specifically for gitlab. Since its usecase is mostly suitable for
gitlab it had been rejected upstream:
https://github.com/jneen/rouge/pull/268
Thanks a lot to @stanhu, @jneen and @tsigo for review!
I have mainly created the rugments fork for the purpose of improving
gitlab's highlighting. Nowadays IMO it works way better than the old
highlight.js solution. But the development is stuck on my side because
of a couple of personal reasons:
* I have finished my studies; last months I was writing my master
thesis. So there was a huge time problem. I am sorry for that.
* I had to move to Munich due to getting a (paid) job. Searching a
flat here is horrible... :)
* Last but not least, maintaining the same code base in two seperate
projects is a mess.
I have decided to switch back to rouge due to several reasons:
* In the beginning I was quite motivated, but since I start
working on my new job next week, the best solution IMO is
switching back to upstream rouge.
* Rouge is continously improving:
https://github.com/jneen/rouge/blob/master/CHANGELOG.mdhttp://rouge.jneen.net/
* There should be absolutely no regressions with this change. Most
likely this pull request will almost fix some minor bugs.
* One less gem in gitlab is a good thing. since Gitlab is quite a
huge bundle of gems. Reducing complexity should be a major
milestone.
Thanks a lot to @stanhu and @jneen for the review!
Fix error 500 when no HEAD is available
Steps to reproduce:
1. Create a project with a README
2. In the actual remote, type: `git symbolic-ref HEAD refs/heads/nowhere`
3. Check that HEAD is gone via `git ls-remote .`
4. Go to the projects page and see the Error 500
Error:
```
NoMethodError - undefined method `sha' for nil:NilClass:
app/helpers/projects_helper.rb:281:in `readme_cache_key'
app/views/projects/_readme.html.haml:10:in `_app_views_projects__readme_html_haml___2036282917939462960_70154565285700'
actionview (4.1.11) lib/action_view/template.rb:145:in `block in render'
activesupport (4.1.11) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.1.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.1.11) lib/active_support/notifications.rb:159:in `instrument'
actionview (4.1.11) lib/action_view/template.rb:339:in `instrument'
actionview (4.1.11) lib/action_view/template.rb:143:in `render'
rack-mini-profiler (0.9.0) lib/mini_profiler/profiling_methods.rb:108:in `block in profile_method'
actionview (4.1.11) lib/action_view/renderer/partial_renderer.rb:306:in `render_partial'
actionview (4.1.11) lib/action_view/renderer/partial_renderer.rb:279:in `block in render'
actionview (4.1.11) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
activesupport (4.1.11) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.1.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.1.11) lib/active_support/notifications.rb:159:in `instrument'
actionview (4.1.11) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
actionview (4.1.11) lib/action_view/renderer/partial_renderer.rb:278:in `render'
actionview (4.1.11) lib/action_view/renderer/renderer.rb:47:in `render_partial'
actionview (4.1.11) lib/action_view/helpers/rendering_helper.rb:35:in `render'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:10:in `block in render_with_haml'
haml (4.0.5) lib/haml/helpers.rb:89:in `non_haml'
haml (4.0.5) lib/haml/helpers/action_view_mods.rb:10:in `render_with_haml'
app/views/projects/show.html.haml:47:in `_app_views_projects_show_html_haml__1458303859692972698_70154948164180'
actionview (4.1.11) lib/action_view/template.rb:145:in `block in render'
activesupport (4.1.11) lib/active_support/notifications.rb:159:in `block in instrument'
```
Closes https://github.com/gitlabhq/gitlabhq/issues/9484, but there may be some other issue there.
See merge request !1041
Steps to reproduce:
1. Create a project with a README
2. In the actual remote, type: `git symbolic-ref HEAD refs/heads/nowhere`
3. Check that HEAD is gone via `git ls-remote .`
4. Go to the projects page and see the Error 500
Closes https://github.com/gitlabhq/gitlabhq/issues/9484
The label page was added to navigation for unauthorized users because
the previously used milestone read permission was still checked. This
has been fixed and read access to labels is now granted (again) for
public projects.
This regression has been introduced in
07efb17e10 (7.12).
See also 9bcd36396b.
Refs !836, !842.
Fix Error 500 when relative submodule resolves to a namespace that has a different name from its path
### What does this MR do?
This MR fixes a bug in resolving a namespace when the `name` differed from `path`.
### Why was this MR needed?
The original code was using `name`, when the proper input to `namespace_project_path` was `path`.
### What are the relevant issue numbers?
Closes#1849
See merge request !864
Update permissions for issue tracker management
Don't allow guest or reporter to set assignee, milestone and label when create or update new issue and merge request.
After this change `Guest` and `Reporter` rule is used to report issues but only `Developer` and higher roles can manage issues (schedule milestone, assign to user or close any issue)
Also I removed some duplication code between issues and merge requests and put all issuable partials in one directory
See merge request !890