Defect #30850
closedUnified diff link broken on specific file/revision diff view
0%
Description
Clicking on the "Unified diff" link at the bottom of a diff page of a specific revision doesn't work anymore.
For a git revision, it simply produces a "Page not found" error.
Url are like 'https://.../projects/:project_id/repository/:repository_id/revisions/:rev/diff.diff, the last component is interpreted as a (/*path) according to routes.rb (lines 250 and 258)
This was fixed in issue #11325 (revision 9909), but was broken in 4.0.1 again.
Related issues
Updated by Jean-Philippe Lang over 5 years ago
- Target version changed from 4.0.2 to 4.0.3
Updated by Mizuki ISHIKAWA over 5 years ago
By changing to the following, the diff format is allowed.
diff --git a/config/routes.rb b/config/routes.rb
index 0344982085..07287f208d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -250,7 +250,7 @@ Rails.application.routes.draw do
get "projects/:id/repository/:repository_id/revisions/:rev/#{action}(/*path)",
:controller => 'repositories',
:action => action,
- :format => 'html',
+ :format => (action == 'diff' ? /(html|diff)/ : 'html'),
:constraints => {:rev => /[a-z0-9\.\-_]+/, :path => /.*/}
end
@@ -258,7 +258,7 @@ Rails.application.routes.draw do
get "projects/:id/repository/:repository_id/#{action}(/*path)",
:controller => 'repositories',
:action => action,
- :format => 'html',
+ :format => (action == 'diff' ? /(html|diff)/ : 'html'),
:constraints => {:path => /.*/}
end
Updated by Jean-Philippe Lang over 5 years ago
Mizuki ISHIKAWA wrote:
By changing to the following, the diff format is allowed.
[...]
This change doesn't work when trying to get the diff of a single file of a revision, eg:
/projects/projet-a/repository/svn2/revisions/10/diff/subversion_test/folder/subfolder/journals_controller.rb.diff => 404 not found
Updated by Jean-Philippe Lang over 5 years ago
- Status changed from Confirmed to Resolved
Fix committed in r17962 by restoring :format => false
just like it was in 3.4.
This was changed when upgrading to Rails 5 because :format => false
was no longer working a sexpected, I suspect that a Rails regression was fixed lately.
I've also added some integration tests to make sure that browsing diffs no longer breaks.
Just in case, could anyone confirm this is fixed?
Updated by Jean-Philippe Lang over 5 years ago
- Status changed from Resolved to Closed
- Assignee set to Jean-Philippe Lang
- Resolution set to Fixed
Updated by Go MAEDA over 5 years ago
- Related to Defect #31141: SCM: error when *.yml and *.txt show added
Updated by Go MAEDA over 5 years ago
- Status changed from Closed to Reopened
- Target version changed from 4.0.3 to 4.0.4
Updated by Jean-Philippe Lang over 5 years ago
- Status changed from Reopened to Closed
Merged to 4.0-stable, thanks for digging into this!
Updated by Go MAEDA over 4 years ago
- Related to Defect #32449: Diff view for .js files in repositories is broken added