Defect #25563 » issue-25563.diff
| app/controllers/repositories_controller.rb | ||
|---|---|---|
| 172 | 172 |
return true if Redmine::MimeType.is_type?('text', path)
|
| 173 | 173 |
# Ruby 1.8.6 has a bug of integer divisions. |
| 174 | 174 |
# http://apidock.com/ruby/v1_8_6_287/String/is_binary_data%3F |
| 175 |
return false if ent.is_binary_data?
|
|
| 175 |
return false if Redmine::Scm::Adapters::ScmData.is_binary_data?(ent)
|
|
| 176 | 176 |
true |
| 177 | 177 |
end |
| 178 | 178 |
private :is_entry_text_data? |
| lib/redmine/core_ext/string.rb | ||
|---|---|---|
| 4 | 4 |
class String #:nodoc: |
| 5 | 5 |
include Redmine::CoreExtensions::String::Conversions |
| 6 | 6 |
include Redmine::CoreExtensions::String::Inflections |
| 7 | ||
| 8 |
def is_binary_data? |
|
| 9 |
( self.count( "^ -~", "^\r\n" ).fdiv(self.size) > 0.3 || self.index( "\x00" ) ) unless empty? |
|
| 10 |
end |
|
| 11 | 7 |
end |
| lib/redmine/scm/adapters/abstract_adapter.rb | ||
|---|---|---|
| 430 | 430 |
class Branch < String |
| 431 | 431 |
attr_accessor :revision, :scmid |
| 432 | 432 |
end |
| 433 | ||
| 434 |
class ScmData |
|
| 435 |
def self.is_binary_data?(data) |
|
| 436 |
unless data.empty? |
|
| 437 |
data.count( "^ -~", "^\r\n" ).fdiv(data.size) > 0.3 || data.index( "\x00" ) |
|
| 438 |
end |
|
| 439 |
end |
|
| 440 |
end |
|
| 433 | 441 |
end |
| 434 | 442 |
end |
| 435 | 443 |
end |
| lib/redmine/scm/adapters/git_adapter.rb | ||
|---|---|---|
| 338 | 338 |
content = nil |
| 339 | 339 |
git_cmd(cmd_args) { |io| io.binmode; content = io.read }
|
| 340 | 340 |
# git annotates binary files |
| 341 |
return nil if content.is_binary_data?
|
|
| 341 |
return nil if ScmData.is_binary_data?(content)
|
|
| 342 | 342 |
identifier = '' |
| 343 | 343 |
# git shows commit author on the first occurrence only |
| 344 | 344 |
authors_by_commit = {}
|