我在abas-ERP的环境中工作,它使用 - 由于历史原因 - 一个名为abas-s3的深奥字符集。我们将Git与ERP服务器上的本地存储库一起使用来版本化我们的程序。Git - 支持异国情调的字符集
当然,Git不支持abas-s3。在erp服务器上有一个名为s3_conv的程序,它从abas-s3转换到外部世界(例如UTF-8和UTF-16),反之亦然。
有没有什么方法可以使用这个程序,使用UTF-8作为存储库,使用s3作为工作树?
我很欣赏任何反馈!提前致谢!
我在abas-ERP的环境中工作,它使用 - 由于历史原因 - 一个名为abas-s3的深奥字符集。我们将Git与ERP服务器上的本地存储库一起使用来版本化我们的程序。Git - 支持异国情调的字符集
当然,Git不支持abas-s3。在erp服务器上有一个名为s3_conv的程序,它从abas-s3转换到外部世界(例如UTF-8和UTF-16),反之亦然。
有没有什么方法可以使用这个程序,使用UTF-8作为存储库,使用s3作为工作树?
我很欣赏任何反馈!提前致谢!
如果问题是文件内容,您可以使用清洁/涂抹过滤器(见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文件(内部资料库,或者每个库,或每用户或全系统)应使用此操作转换哪些文件。假设你想要转换与SQL文件,使用*.sql
扩展,文件的相应片段看起来是这样的(注意,不能有空格周围=
这里):
*.sql filter=s3conv
注意,Git是编码不可知的,你不需要转换文件的内容...除非你需要它的互操作性?
如果您需要正确有git diff
显示变化(假设你没有呼机,可以显示阿巴斯-S3编码的,且可以core.pager
使用),你可能需要配置textconv
过滤INSTEAD:
在配置文件中:
[diff "s3conv"]
textconv = s3_conv --from abas-s3 --to utf-8
这假定终端和寻呼机被配置成显示UTF-8
在gitattributes文件:
*.sql diff=s3conv
感谢您的回答和对不起,我的延迟的响应。我会在星期一尝试一下,并让你知道结果! – 2015-02-07 12:12:07
这正是我正在寻找的。谢谢一堆! – 2015-02-10 07:25:34