我有一个 git 项目,主要包含 z/OS COBOL 源代码。
当我使用以下命令将其克隆到我的 z/OS 系统时:
git clone myproject
Run Code Online (Sandbox Code Playgroud)
我注意到所有克隆的文件都是 ASCII (ISO8859-1) 格式。有没有办法将工作树保留在 z/OS 上的 EBCDIC 1047 中?
chtag -p产生以下结果:
t ISO8859-1 T=on hello.cob
Run Code Online (Sandbox Code Playgroud)
与此同时,我目前正在使用 iconv 转换文件,但有更好的方法吗?
很长一段时间以来,Git 都有 gitattributes,这是回答这个问题的起点。您可以在此处的Git 文档中阅读更多相关信息。
\n与您在文档中找到的内容相比,z/OS 在这方面的行为有点不同。但这是有原因的。虽然 Git 文档提到working-tree-encoding您应该使用zos-working-tree-encoding指定 IBM-1047 来代替。它最初是由 Rocket 开发的,但后来也被其他版本采用(请参阅下面 Mike 的评论)。它记录在这里:https://docs.rocketsoftware.com/bundle/openappdev_ug_20/page/brb1683803214347.html
我不确定这一点,但我的理解是,通过这种方式,非 z/OS 主机上的 Git 签出在尝试将文件转换为 EBCDIC 代码页时不会遇到问题。如果您确定您的项目不会在非 z/OS 系统上签出,您也可以使用working-tree-encoding.
您的案例的示例 .gitattributes 文件如下所示:
\n*.cob zos-working-tree-encoding=ibm-1047\nRun Code Online (Sandbox Code Playgroud)\n.gitattributes 文件必须采用 UTF-8(或 ISO8859-1,但尽量坚持使用 UTF-8。)
\n注意:您可能会发现来自 IBM 的一些示例,其中还包含 git-encoding 参数来指定 Git 如何在内部处理文件。不应再使用它,默认为 UTF-8(也在 z/OS 上)。Rocket在这里对此进行了描述。
\n注 2:根据个人经验,IBM-1047 通常是不够的,因为它不包含 \xe2\x82\xac 符号,这就是为什么我们倾向于使用像 ibm-1141 这样的国家代码页(在德国这里) )。对于世界其他地方来说,这可能并不有趣。
\n| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |