Skip to content

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 42387b73.

Merge request reports