Defect #30850
Unified diff link broken on specific file/revision diff view
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | % Done: | 0% | ||
Category: | SCM | |||
Target version: | 4.0.4 | |||
Resolution: | Fixed | Affected version: | 4.0.1 |
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
History
#1
Updated by Go MAEDA over 3 years ago
- Status changed from New to Confirmed
#2
Updated by Go MAEDA over 3 years ago
- Target version set to 4.0.2
#3
Updated by Jean-Philippe Lang over 3 years ago
- Target version changed from 4.0.2 to 4.0.3
#4
Updated by Mizuki ISHIKAWA over 3 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
#5
Updated by Jean-Philippe Lang over 3 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
#6
Updated by Jean-Philippe Lang over 3 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?
#7
Updated by Jean-Philippe Lang over 3 years ago
- Status changed from Resolved to Closed
- Assignee set to Jean-Philippe Lang
- Resolution set to Fixed
#8
Updated by Go MAEDA over 3 years ago
- Related to Defect #31141: SCM: error when *.yml and *.txt show added
#9
Updated by Go MAEDA over 3 years ago
- Status changed from Closed to Reopened
- Target version changed from 4.0.3 to 4.0.4
#10
Updated by Toshi MARUYAMA about 3 years ago
- Description updated (diff)
#11
Updated by Jean-Philippe Lang about 3 years ago
- Status changed from Reopened to Closed
Merged to 4.0-stable, thanks for digging into this!
#12
Updated by Go MAEDA over 2 years ago
- Related to Defect #32449: Diff view for .js files in repositories is broken added