我在abas-ERP的环境中工作,由于历史原因,它使用了一个名为abas-s3的神秘字符集。我们在ERP服务器上使用Git和本地存储库来对我们的程序进行版本控制。
当然Git并不支持abas-s3。在erp-servers上有一个名为s3_conv的程序,它从abas-s3转换到外部世界(例如UTF-8和UTF-16),反之亦然。
有没有办法使用这个程序,将UTF-8用于存储库,s3用于工作树?
我感谢任何反馈!提前谢谢!
答案 0 :(得分:2)
如果问题出在文件内容,您可以使用清除/涂抹过滤器(请参阅gitattributes)在存储时将Git转换为UTF-8检查存储库,以及检查内容到工作区域时的abas-s3。
您也可以在Pro Git书中找到解释。
要点:
您需要在配置文件中定义 (每个存储库,每个用户或系统范围内)过滤器,其中包含两个命令:{{1从工作区表示转换为存储库表示,以及clean
反向工作。假设smudge
的工作方式与s3_conv
类似,它可能看起来像这样(这是相应配置文件的一个片段):
iconv
使用 gitattributes文件(在存储库内,或每个存储库,每个用户或系统范围内)声明应使用此操作转换哪些文件。假设你想用SQL扩展文件,使用[filter "s3conv"]
clean = s3_conv --from abas-s3 --to utf-8
smudge = s3_conv --from utf-8 --to abas-s3
扩展名,文件的相应片段可能如下所示(注意这里*.sql
周围不能有空格):
=
请注意,Git与编码无关,您不需要转换文件的内容......除非您需要它用于互操作?
如果您需要正确显示*.sql filter=s3conv
显示更改(假设您没有可以显示abas-s3编码的寻呼机,并且可以在git diff
中使用),您可能需要配置 core.pager
过滤器 INSTEAD :
在配置文件中:
textconv
这假设终端和寻呼机配置为显示utf-8
在gitattributes文件中:
[diff "s3conv"]
textconv = s3_conv --from abas-s3 --to utf-8