"ui_mars"
end
end
+
+ def string_to_utf8 str
+ Gitlabhq::Encode.utf8 str
+ end
end
class Commit
include ActiveModel::Conversion
+ include Gitlabhq::Encode
extend ActiveModel::Naming
attr_accessor :commit
end
def safe_message
- message
+ utf8 message
end
def created_at
end
def author_name
- author.name.force_encoding("UTF-8")
+ utf8 author.name
end
def committer_name
- committer.name
+ utf8 committer.name
end
def committer_email
%li
- if diff.deleted_file
%span.removed_file
- %a{:href => "##{diff.a_path}"}
- = diff.a_path
+ %a{:href => "##{diff.old_path}"}
+ = diff.old_path
= image_tag "diff_file_delete.png"
- elsif diff.renamed_file
%span.moved_file
- %a{:href => "##{diff.b_path}"}
- = diff.a_path
+ %a{:href => "##{diff.new_path}"}
+ = diff.old_path
= "->"
- = diff.b_path
+ = diff.new_path
= image_tag "diff_file_notice.png"
- elsif diff.new_file
%span.new_file
- %a{:href => "##{diff.b_path}"}
- = diff.b_path
+ %a{:href => "##{diff.new_path}"}
+ = diff.new_path
= image_tag "diff_file_add.png"
- else
%span.edit_file
- %a{:href => "##{diff.b_path}"}
- = diff.b_path
+ %a{:href => "##{diff.new_path}"}
+ = diff.new_path
= image_tag "diff_file_info.png"
- unless @suppress_diff
- diffs.each_with_index do |diff, i|
- next if diff.diff.empty?
- - file = (@commit.tree / diff.b_path)
- - file = (@commit.prev_commit.tree / diff.a_path) unless file
+ - file = (@commit.tree / diff.new_path)
+ - file = (@commit.prev_commit.tree / diff.old_path) unless file
- next unless file
.diff_file
.diff_file_header
- if diff.deleted_file
- %strong{:id => "#{diff.a_path}"}= diff.a_path
+ %strong{:id => "#{diff.old_path}"}= diff.old_path
- else
- = link_to tree_file_project_ref_path(@project, @commit.id, diff.b_path) do
- %strong{:id => "#{diff.b_path}"}= diff.b_path
+ = link_to tree_file_project_ref_path(@project, @commit.id, diff.new_path) do
+ %strong{:id => "#{diff.new_path}"}= diff.new_path
%br/
.diff_file_content
- if file.text?
#monkey patch raw_object from string
Grit::GitRuby::Internal::RawObject.class_eval do
def content
- transcoding(@content)
- rescue Exception => ex
- Rails.logger.error ex.message
@content
end
+end
- private
-
- def transcoding(content)
- content ||= ""
- hash = CharlockHolmes::EncodingDetector.detect(content)
-
- if hash
- return content if hash[:type] == :binary
-
- if hash[:encoding] == "UTF-8"
- content = if hash[:confidence] < 100
- content
- else
- content.force_encoding("UTF-8")
- end
- return content
- end
+Grit::Diff.class_eval do
+ def old_path
+ Gitlabhq::Encode.utf8 a_path
+ end
- CharlockHolmes::Converter.convert(content, hash[:encoding], 'UTF-8') if hash[:encoding]
- else
- content.force_encoding("UTF-8")
- end
+ def new_path
+ Gitlabhq::Encode.utf8 b_path
end
end
-
Grit::Git.git_timeout = GIT_OPTS["git_timeout"]
Grit::Git.git_max_size = GIT_OPTS["git_max_size"]
--- /dev/null
+module Gitlabhq
+ module Encode
+ extend self
+
+ def utf8 message
+ hash = CharlockHolmes::EncodingDetector.detect(message)
+ if hash[:encoding]
+ CharlockHolmes::Converter.convert(message, hash[:encoding], 'UTF-8')
+ else
+ message
+ end.force_encoding("utf-8")
+ end
+ end
+end