对于一个工作项目,我在(无显示、远程)Linux 服务器上使用无头 Squeak,并在Windows开发人员机器上使用 Squeak 。
开发人员机器上的代码使用 Monticello 进行管理。不幸的是,我必须使用 SFTP 将 mcz 复制到服务器(例如,出于安全原因,无法在服务器上拥有推送存储库)。然后将代码合并,例如:
MczInstaller installFileNamed: 'name-b.18.mcz'.
这通常有效。
不幸的是,我们的代码库包含包含元音变音和其他非 ascii 字符的字符串。在蒙蒂塞洛-重新导入期间,其中一些被其他字符替换,一些被替换为什么都没有。
我也试过了
MczInstaller installStream: (FileStream readOnlyFileNamed: '...') binary
(注意 .mcz 的实际上是 .zip 的,所以二进制应该是合适的,我想它是默认的)
找出如何使蒙蒂塞洛的传输保留非 ascii 的Squeak内部编码是我问题的主要目标。将所有源代码更改为仅使用 ascii 字符串(至少在此代码库中)不太可取,因为涉及人工。如果您对为什么在这种情况下它不是简单的grep -replace 感兴趣,请阅读此附注:
(旁注:(简化/特殊情况)代码库使用 Seaside 的 #text: 方法来呈现包含必须进行 html 转义的字符的字符串。这适用于我们的非 ascii,例如,如果我们要转换ä
为ä
grep-replace 文字 ä's byä
显式,然后我们将不得不使用 #html: 方法代替(否则双转义),但是这将要求我们替换所有其他必须被 html 转义的字符(例如&),但源代码本身又包含这样的字符。还有其他情况,比如一些接受第三方字符串的#text:,它们可能不会被#html替换...)