Jekyll LF / CRLF问题与git

时间:2014-09-05 08:49:51

标签: git newline jekyll lf

我有一个Jekyll文件夹,其中只使用git跟踪生产部分(_site)。当我运行命令以jekyll serve -w为本地站点提供服务时,文件将根据我正在使用的计算机更改为LF或CRLF:Windows的CRLF,Mac的LF。这真的很烦人,因为我每次切换操作系统时都会提交_site内的所有文件。

我已尝试使用autocrlf = false在git配置文件中修复此问题,但由于文件是由Jekyll在更高级别生成的,因此它似乎没有任何影响。

有没有办法告诉Jekyll生成特定格式的所有文件,LF或CRLF?

1 个答案:

答案 0 :(得分:1)

三个明显的解决方案:

第一个解决方案:Jekyll插件

要通过LF全局替换CR或CRLF,最简单的方法是在将文件写入目标时执行此操作。

此插件重载了Jekyll:Convertible.write方法:

module Jekyll
  module Convertible
    def write(dest)
      ### begin overloading
      # Replaces CR and CRLF by LF
      self.output = self.output.gsub(/\r\n?/, "\n")
      ### end overloading

      path = destination(dest)
      FileUtils.mkdir_p(File.dirname(path))
      File.open(path, 'wb') do |f|
        f.write(output)
      end
    end
  end
end

将此保存在_plugins / crlf.rb中,它会自动在 jekyll build 时运行。

第二个解决方案:配置代码编辑器

配置代码编辑器以使用LF。如果你不能改变编辑。