2015-02-06 55 views
3

我在abas-ERP的环境中工作,它使用 - 由于历史原因 - 一个名为abas-s3的深奥字符集。我们将Git与ERP服务器上的本地存储库一起使用来版本化我们的程序。Git - 支持异国情调的字符集

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

有没有什么方法可以使用这个程序,使用UTF-8作为存储库,使用s3作为工作树?

我很欣赏任何反馈!提前致谢!

回答

2

如果问题是文件内容,您可以使用清洁/涂抹过滤器(见gitattributes)来让Git存储到存储库时转换为UTF-8,并检查出的内容时,ABAS-S3进入工作区。

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


总结:

  1. 需要在配置文件定义(每库,每个用户,或系统范围)一个滤波器由两个命令:clean该变换从工作区域表示到存储库表示,以及反向工作的smudge。假设s3_conv作品像iconv,它看起来是这样的(这是适当的配置文件的片段):

    [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显示变化(假设你没有呼机,可以显示阿巴斯-S3编码的,且可以core.pager使用),你可能需要配置textconv过滤INSTEAD

  1. 在配置文件中:

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

    这假定终端和寻呼机被配置成显示UTF-8

  2. 在gitattributes文件:

    *.sql diff=s3conv 
    
+0

感谢您的回答和对不起,我的延迟的响应。我会在星期一尝试一下,并让你知道结果! – 2015-02-07 12:12:07

+0

这正是我正在寻找的。谢谢一堆! – 2015-02-10 07:25:34