Git - 支持异国情调的charset

时间:2015-02-06 09:18:13

标签: git character-encoding abas

我在abas-ERP的环境中工作,由于历史原因,它使用了一个名为abas-s3的神秘字符集。我们在ERP服务器上使用Git和本地存储库来对我们的程序进行版本控制。

当然Git并不支持abas-s3。在erp-servers上有一个名为s3_conv的程序,它从abas-s3转换到外部世界(例如UTF-8和UTF-16),反之亦然。

有没有办法使用这个程序,将UTF-8用于存储库,s3用于工作树?

我感谢任何反馈!提前谢谢!

1 个答案:

答案 0 :(得分:2)

如果问题出在文件内容,您可以使用清除/涂抹过滤器(请参阅gitattributes)在存储时将Git转换为UTF-8检查存储库,以及检查内容到工作区域时的abas-s3。

您也可以在Pro Git书中找到解释。


要点:

  1. 您需要在配置文件中定义 (每个存储库,每个用户或系统范围内)过滤器,其中包含两个命令:{{1从工作区表示转换为存储库表示,以及clean反向工作。假设smudge的工作方式与s3_conv类似,它可能看起来像这样(这是相应配置文件的一个片段):

    iconv
  2. 使用 gitattributes文件(在存储库内,或每个存储库,每个用户或系统范围内)声明应使用此操作转换哪些文件。假设你想用SQL扩展文件,使用[filter "s3conv"] clean = s3_conv --from abas-s3 --to utf-8 smudge = s3_conv --from utf-8 --to abas-s3 扩展名,文件的相应片段可能如下所示(注意这里*.sql周围不能有空格):

    =
  3. 请注意,Git与编码无关,您不需要转换文件的内容......除非您需要它用于互操作?


    如果您需要正确显示*.sql filter=s3conv 显示更改(假设您没有可以显示abas-s3编码的寻呼机,并且可以在git diff中使用),您可能需要配置 core.pager过滤器 INSTEAD

    1. 在配置文件中:

      textconv

      这假设终端和寻呼机配置为显示utf-8

    2. 在gitattributes文件中:

      [diff "s3conv"]
           textconv = s3_conv --from abas-s3 --to utf-8