1

什么是问题?

当我从 Gitlab 上一个项目的提交视图推送包含二进制文件的提交链接时,我收到一个内部错误“500 糟糕,我们这边出了点问题。”
创建其来源与上述相同提交的合并请求时也会出现此问题。Production.log 说,


Started GET "/TempTest/bsp/commit/3098a49f2fd1c77be0c383994aa6655f5d15ebf8" for 127.0.0.1 at 2016-05-30 16:17:15 +0900
Processing by Projects::CommitController#show as HTML
  Parameters:{"namespace_id"=>"TempTest", "project_id"=>"bsp", "id"=>"3098a49f2fd1c77be0c383994aa6655f5d15ebf8"}

Encoding::CompatibilityError (incompatible character encodings: UTF-8 and ASCII-8BIT):
  app/views/projects/diffs/_file.html.haml:54:in `_app_views_projects_diffs__file_html_haml__1070266479743635718_49404820'
  app/views/projects/diffs/_diffs.html.haml:22:in `block in _app_views_projects_diffs__diffs_html_haml__2984561770205002953_48487320'
  app/views/projects/diffs/_diffs.html.haml:17:in `each_with_index'
  app/views/projects/diffs/_diffs.html.haml:17:in `_app_views_projects_diffs__diffs_html_haml__2984561770205002953_48487320'
  app/views/projects/commit/show.html.haml:12:in `_app_views_projects_commit_show_html_haml__3333221152053087461_45612480'
  app/controllers/projects/commit_controller.rb:30:in `show'
  lib/gitlab/middleware/go.rb:16:in `call'

Completed 500 Internal Server Error in 210ms (Views: 8.7ms | ActiveRecord: 10.5ms)

Gtilab 似乎错误地检测到带有文本文件的二进制文件。
所以 HTML 格式化引擎似乎遇到了错误。("Encoding::CompatibilityError")

对我来说,Gitlab 有时会误检测带有文本文件的二进制文件,但问题是当这种误检测发生时,Gitlab 服务器会通过内部错误停止事务。

即使发生这种误判,谁能告诉我如何继续服务器事务?
例如,我假设以下答案。

  • eg1) 强制将文件识别为二进制文件。
  • eg2) 发生此类错误时绕过 HTML 转换。

我试图解决的问题。

我在 .gitattribute 中添加了描述 '*.XXX binary' 以确认我是否可以让某个文件强制识别它是 Gitlab 的二进制文件。Git 客户端将该文件识别为二进制文件,并且 diff 没有输出文本。但是,即使我确实推送了它,在 Gitlab 中也没有任何效果。

版本信息

  • 我最初在 Gitlab 8.6.2 上遇到了这个问题,但在 8.8.3 上也出现了同样的问题。
  • 我使用 git-2.7.2

谢谢你。

4

0 回答 0