git:使用 git-extensions 和 WinMerge 处理 gupta apl 文件编码问题

问题描述

我使用 git 扩展来实现简单的 git 功能。我试图将它用于旧的 gupta 代码文件中有很多二进制和元数据:

[...]
.head 7 +  On cAM_F3
.head 8 -  Call c_fktToggleButtonPerson( )
.head 5 +  Pushbutton: pbPersonAG
.data CLAsspROPSSIZE
0000: 2400
.enddata
.data CLAsspROPS
0000: 5400610062004300 680069006C006400 4E0061006D006500 73000000FFFE0200
0020: 00000000
.enddata
[...]

不过效果还不错。我将 *.apl diff 添加到 .gitattributes 以便 git 扩展正确地向我显示更改。虽然我注意到在进行合并和挑选时 git 并不关心更改,只是更改与否,这使它有点乏味。所以它仍然以二进制方式处理文件

所以我了解到文件编码是根据 WinMerge 的 ISO-10646-UCS-2 BOM 或根据 Notepad++ 的 UCS-2 LE BOM。因此,我将 .gitattributes 更改为 *.apl diff working-tree-encoding=UCS-2 eol=CRLF 并忽略了 git 操作将需要更长时间的警告,因为它现在正在转换文件。这些文件的第一个更改包含“remove everythingrewrite everything”,可能是因为它更改了编码 (?)

之后它们看起来更好 before / after 但 WinMerge doesn't handle the encodings properly 和第一次提交 handles it only for one half

做差异(在 gitextensions 中在能够提交之前自动完成)似乎需要很长时间。我还注意到,IDE 似乎有问题 reading the changed files 如果我签出其他分支然后再返回。

我不确定提交前的额外等待是否值得更好的合并/挑选过程的潜力。而且我不知道我是否可以修复损坏的文件

在我重做一些工作之前,我想得到一些建议,我应该做什么,我应该在我的 .gitattributes 中写什么?我应该使用不同的工具吗?

提前致谢。

编辑:似乎 git 在将内部使用的 UTF-8 转换为 UCS-2 时存在问题。在尝试重置某些未提交的工作时,我有时会收到 git 无法转换文件错误

解决方法

。 您没有提及您的 .apl 文件是使用哪个版本的 Gupta TeamDeveloper 构建的。

但是从 v7.1 开始(现在可以认为 7.1 是“旧的”),所有这些都开箱即用地支持 Git。 1

此外,Gupta 自己的团队对象管理器是一个很棒的存储库工具,可以(除其他外)比较两个或多个 SQLWindows(.apl、.apt、.app)文件并报告它们之间的差异他们。它还可以将文件与其后续版本进行合并,生成包含通用代码和合并参与者三路修改区域的最终版本。

如果您运行的是 v7 之前的版本:

  1. 您可以(应该)考虑升级到至少 v7.3
  2. 使用 TortoiseSVN 进行实验,这是一个非常易于使用的修订控制/版本控制/源代码控制。我曾经在 v4 .apls 上使用它。它基于 Apache Subversion (SVN); TortoiseSVN 为 Subversion 提供了一个漂亮而简单的用户界面。 Go here: for TortoiseSVN

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...