【问题标题】:Git - support for exotic charsetGit - 支持外来字符集
【发布时间】:2015-02-06 09:18:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git character-encoding abas


    【解决方案1】:

    如果问题出在 文件内容,您可以使用 clean/smudge filters(请参阅 gitattributes)让 Git 在存储到存储库时转换为 UTF-8 , 并在将内容检出到工作区时到 abas-s3。

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


    总结:

    1. 您需要在配置文件(每个存储库、每个用户或系统范围)中定义一个 过滤器,该过滤器由两个命令组成:clean,从工作区表示到存储库表示,smudge 反向工作。假设s3_conviconv 一样工作,它可能看起来像这样(这是适当配置文件的片段):

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

      *.sql filter=s3conv
      

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


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

    1. 在配置文件中:

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

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

    2. 在 gitattributes 文件中:

      *.sql diff=s3conv
      

    【讨论】:

    • 感谢您的回答,对我迟到的回复感到抱歉。我会在星期一试一试,然后告诉你结果!
    • 这正是我想要的。非常感谢!
    猜你喜欢
    • 2015-01-11
    • 2018-11-25
    • 2018-08-22
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多