Fix server error when editing a note to "+1" or "-1"
### Summary
If a user edits a comment with "+1" or "-1" in the beginning, the POST returns an Internal Server error. (issue #1151). This merge request resolves that error.
### Steps to reproduce
1. Comment on an issue with "Test comment".
2. Edit the issue.
3. Write "+1" and click "Save Comment".
### Expected behavior
The edited note should be saved and refreshed. Any previous upvotes/downvotes from the user should contain a strikethrough.
### Observed behavior
Internal Error
### Relevant logs
```
Started PUT "/avocode/avocode-manager/notes/4996" for 185.33.136.107 at 2015-02-28 17:11:53 +0100
Processing by Projects::NotesController#update as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"*removed*", "note"=>{"note"=>"+1\r\n\r\nYes"}, "commit"=>"Save Comment", "project_id"=>"avocode/avocode-manager", "id"=>"4996"}
Completed 500 Internal Server Error in 86ms
ActionView::Template::Error (undefined method `each' for nil:NilClass):
28: %span.note-last-update
29: = note_timestamp(note)
30:
31: - if note.superceded?(@notes)
32: - if note.upvote?
33: %span.vote.upvote.label.label-gray.strikethrough
34: %i.fa.fa-thumbs-up
app/models/note.rb:495:in `superceded?'
app/views/projects/notes/_note.html.haml:31:in `_app_views_projects_notes__note_html_haml___812277000516355462_69988235638820'
app/controllers/projects/notes_controller.rb:71:in `note_to_html'
app/controllers/projects/notes_controller.rb:103:in `render_note_json'
app/controllers/projects/notes_controller.rb:39:in `block (2 levels) in update'
app/controllers/projects/notes_controller.rb:38:in `update'
```
### Fix
It turns out no tests were present for the "Edit Issue" functionality. I added spinach tests to exercise this and reproduced the error.
Most of the routes in `notes_controller.rb` appear to render all notes for the given discussion. `_form.html.haml` needs the full list of notes commented by the user to add strikethroughs for older upvotes/downvotes. However, only the `index` route appeared to obtain this information. The fix is to add a `before_filter` to obtain all the user's notes beforehand, except in the delete case where this information is not needed.
Things to watch: `NotesFinder` needs `target_type` and `target_id` to determine what to do. I'm not sure if there is a conscious effort to phase these keywords out in favor of `noteable_type` and `noteable_id`.
See merge request !360
Don't leak information about private project existence via Git-over-SSH/HTTP.
Fixes#2040 and https://gitlab.com/gitlab-org/gitlab-ce/issues/343.
Both `Grack::Auth` (used by Git-over-HTTP) and `Api::Internal /allowed` (used by gitlab-shell/Git-over-SSH) now return a generic "Not Found" error when the project exists but the user doesn't have access to it.
See merge request !1578
Render go-import meta tag for private repos.
The previously solution (626f5bab35) required a change to nginx config and broke visits from Googlebot and other clients including "go" in their user agent.
See merge request !1587
Don't show Unassigned in user select when searching.
Fixes#2056.
When a search term is present, the Unassigned item isn't rendered, so the highlighted item is the first search result and hitting Enter works as expected.
See merge request !1620
Fix import check for case sensetive namespaces
If you already have namespace `ABc` and you try to import project with namespace `abC` - import will fail with 422 error.
cc @valery
See merge request !1618
Count commits in branches as well in the commit calendar
This MR fixes a small bug in the commit calendar.
Currently only commits that are in the master branch are counted.
With this change, commits in other branches are included as well.
fixes one of the issues found in #1162
See merge request !362
Fix merge request URL passed to Webhooks
If you look at the data structure passed to Webhooks, you will see:
`"url"=>nil`
I don't think any of the Webhooks or services are using this yet, so right now nothing so far depends upon this value being correct.
See merge request !352
Support referencing issues to a project whose name starts with a digit
Gitlab supports adding users or projects whose name starts with a "_" or a digit, but the regexp in markdown.rb enforces "a-zA-Z" for the first character.
This change allows to reference issues or merge requests in other projects whose name starts with a digit, like `owner/2ndtestproject#123` or `2nduser/superproject!123`.
See merge request !264
Fix protected branches routing
### Summary
On the master branch, if you attempt to access the protected branches in the project settings with an empty repo, you get `NoMethodError - undefined method "project_url"`.
### Steps to reproduce
1. Check out GitLab master and run.
2. Create a new project.
3. Go to Settings.
4. Click on "Protected branches"
### Expected behavior
The controller is supposed to redirect back to the projects page since there are no branches.
### Observed behavior
Internal Error 500
### Relevant logs
```
NoMethodError - undefined method `project_url' for #<Projects::ProtectedBranchesController:0x007fd920054af0>:
app/controllers/application_controller.rb:157:in `method_missing'
actionpack (4.1.9) lib/action_dispatch/routing/polymorphic_routes.rb:142:in `polymorphic_url'
actionpack (4.1.9) lib/action_dispatch/routing/url_for.rb:161:in `url_for'
actionpack (4.1.9) lib/action_controller/metal/redirecting.rb:91:in `_compute_redirect_to_location'
turbolinks (2.0.0) lib/turbolinks.rb:15:in `_compute_redirect_to_location_with_xhr_referer'
actionpack (4.1.9) lib/action_controller/metal/redirecting.rb:71:in `redirect_to
```
### Fix
I added a unit test for the empty project case and replicated the issue. I added the URL router helpers that appear to be necessary after 42387b733b.
See merge request !359