Git - 支持外来字符集
Git - support for exotic charset
我在 abas-ERP 环境中工作,由于历史原因,它使用了一个名为 abas-s3 的深奥字符集。我们使用 Git 和 ERP 服务器上的本地存储库来对我们的程序进行版本控制。
自然Git不支持abas-s3。在 erp-servers 上有一个名为 s3_conv 的程序,它从 abas-s3 转换到外部世界(例如 UTF-8 和 UTF-16),反之亦然。
有什么方法可以使用此程序,将 UTF-8 用于存储库,将 s3 用于工作树?
感谢任何反馈!提前致谢!
如果问题出在文件内容,您可以使用clean/smudge过滤器(参见gitattributes) Git 在存储到存储库时转换为 UTF-8,在将内容检出到工作区时转换为 abas-s3。
您也可以在 Pro Git 书中找到解释。
总结:
您需要在配置文件(每个存储库、每个用户或系统范围)中定义一个过滤器 由两个命令组成: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
用 gitattributes file 声明(在存储库内,或每个存储库,或每个用户,或系统范围内)应该使用此转换哪些文件手术。假设您要转换 SQL 的文件,使用 *.sql
扩展名,文件的适当片段可能如下所示(注意此处 =
周围不能有空格):
*.sql filter=s3conv
请注意 Git 与编码无关,您不需要转换文件的内容...除非您需要它进行互操作?
如果您需要 git diff
正确显示更改(假设您没有可以显示 abas-s3 编码并且可以在 core.pager
中使用的寻呼机),您可能需要配置 textconv
过滤器 INSTEAD:
在配置文件中:
[diff "s3conv"]
textconv = s3_conv --from abas-s3 --to utf-8
这假定终端和寻呼机配置为显示 utf-8
在 gitattributes 文件中:
*.sql diff=s3conv
我在 abas-ERP 环境中工作,由于历史原因,它使用了一个名为 abas-s3 的深奥字符集。我们使用 Git 和 ERP 服务器上的本地存储库来对我们的程序进行版本控制。
自然Git不支持abas-s3。在 erp-servers 上有一个名为 s3_conv 的程序,它从 abas-s3 转换到外部世界(例如 UTF-8 和 UTF-16),反之亦然。
有什么方法可以使用此程序,将 UTF-8 用于存储库,将 s3 用于工作树?
感谢任何反馈!提前致谢!
如果问题出在文件内容,您可以使用clean/smudge过滤器(参见gitattributes) Git 在存储到存储库时转换为 UTF-8,在将内容检出到工作区时转换为 abas-s3。
您也可以在 Pro Git 书中找到解释。
总结:
您需要在配置文件(每个存储库、每个用户或系统范围)中定义一个过滤器 由两个命令组成:
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
用 gitattributes file 声明(在存储库内,或每个存储库,或每个用户,或系统范围内)应该使用此转换哪些文件手术。假设您要转换 SQL 的文件,使用
*.sql
扩展名,文件的适当片段可能如下所示(注意此处=
周围不能有空格):*.sql filter=s3conv
请注意 Git 与编码无关,您不需要转换文件的内容...除非您需要它进行互操作?
如果您需要 git diff
正确显示更改(假设您没有可以显示 abas-s3 编码并且可以在 core.pager
中使用的寻呼机),您可能需要配置 textconv
过滤器 INSTEAD:
在配置文件中:
[diff "s3conv"] textconv = s3_conv --from abas-s3 --to utf-8
这假定终端和寻呼机配置为显示 utf-8
在 gitattributes 文件中:
*.sql diff=s3conv