diff --git a/Gemfile b/Gemfile index ff16abad..526a7e9e 100644 --- a/Gemfile +++ b/Gemfile @@ -27,6 +27,7 @@ gem "grit", git: "https://github.com/gitlabhq/grit.git", ref: gem "omniauth-ldap", git: "https://github.com/gitlabhq/omniauth-ldap.git", ref: 'f038dd852d7bd473a557e385d5d7c2fd5dc1dc2e' gem 'yaml_db', git: "https://github.com/gitlabhq/yaml_db.git", ref: '98e9a5dca43e3fedd3268c76a73af40d1bdf1dfd' gem 'grack', git: "https://github.com/gitlabhq/grack.git", ref: 'ba46f3b0845c6a09d488ae6abdce6ede37e227e8' +gem 'grit_ext', git: "https://github.com/SaitoWu/grit_ext.git", ref: '212fd40bea61f3c6a167223768e7295dc32bbc10' # Gitolite client (for work with gitolite-admin repo) gem "gitolite", '1.1.0' @@ -83,9 +84,6 @@ gem 'resque_mailer' # HTTP requests gem "httparty" -# Handle encodings -gem "charlock_holmes" - # Colored output to console gem "colored" diff --git a/Gemfile.lock b/Gemfile.lock index 7b21a629..7a379c40 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/SaitoWu/grit_ext.git + revision: 212fd40bea61f3c6a167223768e7295dc32bbc10 + ref: 212fd40bea61f3c6a167223768e7295dc32bbc10 + specs: + grit_ext (0.6.0) + charlock_holmes (~> 0.6.9) + GIT remote: https://github.com/ctran/annotate_models.git revision: 18cd39ad01829deba5aa34634b8540d6675ab978 @@ -92,7 +100,7 @@ GEM carrierwave (0.6.2) activemodel (>= 3.2.0) activesupport (>= 3.2.0) - charlock_holmes (0.6.8) + charlock_holmes (0.6.9) childprocess (0.3.2) ffi (~> 1.0.6) chosen-rails (0.9.8.3) @@ -415,7 +423,6 @@ DEPENDENCIES capybara capybara-webkit carrierwave - charlock_holmes chosen-rails coffee-rails (= 3.2.2) colored @@ -436,6 +443,7 @@ DEPENDENCIES grack! grape (~> 0.2.1) grit! + grit_ext! growl guard-rspec guard-spinach diff --git a/app/controllers/blob_controller.rb b/app/controllers/blob_controller.rb index 30069d19..d68754d0 100644 --- a/app/controllers/blob_controller.rb +++ b/app/controllers/blob_controller.rb @@ -1,7 +1,6 @@ # Controller for viewing a file's blame class BlobController < ProjectResourceController include ExtractsPath - include Gitlab::Encode # Authorize before_filter :authorize_read_project! diff --git a/app/controllers/refs_controller.rb b/app/controllers/refs_controller.rb index 977ccea7..b48d5ec7 100644 --- a/app/controllers/refs_controller.rb +++ b/app/controllers/refs_controller.rb @@ -1,5 +1,4 @@ class RefsController < ProjectResourceController - include Gitlab::Encode # Authorize before_filter :authorize_read_project! diff --git a/app/models/commit.rb b/app/models/commit.rb index e6a87dd9..5efb20ce 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -1,6 +1,5 @@ class Commit include ActiveModel::Conversion - include Gitlab::Encode include StaticModel extend ActiveModel::Naming @@ -112,7 +111,7 @@ class Commit end def safe_message - @safe_message ||= utf8 message + @safe_message ||= message end def created_at @@ -124,7 +123,7 @@ class Commit end def author_name - utf8 author.name + author.name end # Was this commit committed by a different person than the original author? @@ -133,7 +132,7 @@ class Commit end def committer_name - utf8 committer.name + committer.name end def committer_email diff --git a/app/models/tree.rb b/app/models/tree.rb index e4297a71..c3dfd4c7 100644 --- a/app/models/tree.rb +++ b/app/models/tree.rb @@ -8,7 +8,7 @@ class Tree def initialize(raw_tree, project, ref = nil, path = nil) @project, @ref, @path = project, ref, path @tree = if path.present? - raw_tree / path.dup.force_encoding('ascii-8bit') + raw_tree / path else raw_tree end diff --git a/app/views/blame/show.html.haml b/app/views/blame/show.html.haml index 29fac7a4..c5192c53 100644 --- a/app/views/blame/show.html.haml +++ b/app/views/blame/show.html.haml @@ -15,7 +15,7 @@ .file_title %i.icon-file %span.file_name - = @tree.name.force_encoding('utf-8') + = @tree.name %small= number_to_human_size @tree.size %span.options= render "tree/blob_actions" .file_content.blame @@ -32,4 +32,4 @@ %td.lines = preserve do %pre - = Gitlab::Encode.utf8 lines.join("\n") + = lines.join("\n") diff --git a/app/views/tree/_blob.html.haml b/app/views/tree/_blob.html.haml index 9ede3f8e..ebf1ee2c 100644 --- a/app/views/tree/_blob.html.haml +++ b/app/views/tree/_blob.html.haml @@ -2,7 +2,7 @@ .file_title %i.icon-file %span.file_name - = blob.name.force_encoding('utf-8') + = blob.name %small= number_to_human_size blob.size %span.options= render "tree/blob_actions" - if blob.text? diff --git a/app/views/tree/edit.html.haml b/app/views/tree/edit.html.haml index fdd334a3..a14a15b0 100644 --- a/app/views/tree/edit.html.haml +++ b/app/views/tree/edit.html.haml @@ -4,7 +4,7 @@ .file_title %i.icon-file %span.file_name - = "#{@tree.path.force_encoding('utf-8')} (#{@ref})" + = "#{@tree.path} (#{@ref})" .file_content.code #editor= @tree.data diff --git a/config/initializers/3_grit_ext.rb b/config/initializers/3_grit_ext.rb index fd7e288a..d114ea6c 100644 --- a/config/initializers/3_grit_ext.rb +++ b/config/initializers/3_grit_ext.rb @@ -6,23 +6,4 @@ Grit::Git.git_max_size = Gitlab.config.git_max_size Grit::Blob.class_eval do include Linguist::BlobHelper - - def data - @data ||= @repo.git.cat_file({:p => true}, id) - Gitlab::Encode.utf8 @data - end -end - -Grit::Diff.class_eval do - def old_path - Gitlab::Encode.utf8 @a_path - end - - def new_path - Gitlab::Encode.utf8 @b_path - end - - def diff - Gitlab::Encode.utf8 @diff - end end diff --git a/lib/gitlab/encode.rb b/lib/gitlab/encode.rb deleted file mode 100644 index 7e37442e..00000000 --- a/lib/gitlab/encode.rb +++ /dev/null @@ -1,41 +0,0 @@ -# Patch Strings to enable detect_encoding! on views -require 'charlock_holmes/string' -module Gitlab - module Encode - extend self - - def utf8 message - # return nil if message is nil - return nil unless message - - message.force_encoding("utf-8") - # return message if message type is binary - detect = CharlockHolmes::EncodingDetector.detect(message) - return message if detect[:type] == :binary - - # if message is utf-8 encoding, just return it - return message if message.valid_encoding? - - # if message is not utf-8 encoding, convert it - if detect[:encoding] - message.force_encoding(detect[:encoding]) - message.encode!("utf-8", detect[:encoding], undef: :replace, replace: "", invalid: :replace) - end - - # ensure message encoding is utf8 - message.valid_encoding? ? message : raise - - # Prevent app from crash cause of encoding errors - rescue - encoding = detect ? detect[:encoding] : "unknown" - "--broken encoding: #{encoding}" - end - - def detect_encoding message - return nil unless message - - hash = CharlockHolmes::EncodingDetector.detect(message) rescue {} - return hash[:encoding] ? hash[:encoding] : nil - end - end -end diff --git a/lib/gitlab/graph/commit.rb b/lib/gitlab/graph/commit.rb index e26dd4a6..af8d7828 100644 --- a/lib/gitlab/graph/commit.rb +++ b/lib/gitlab/graph/commit.rb @@ -22,13 +22,13 @@ module Gitlab h[:parents] = self.parents.collect do |p| [p.id,0,0] end - h[:author] = Gitlab::Encode.utf8(author.name) + h[:author] = author.name h[:time] = time h[:space] = space h[:refs] = refs.collect{|r|r.name}.join(" ") unless refs.nil? h[:id] = sha h[:date] = date - h[:message] = escape_once(Gitlab::Encode.utf8(message)) + h[:message] = escape_once(message) h[:login] = author.email h end