回答

收藏

在Mercurial中具有.sql扩展名的文件被标识为二进制文件

技术问答 技术问答 122 人阅读 | 0 人回复 | 2023-09-12

我为数据库中的存储过程生成了一个完整的脚本集。当我创建它时Mercurial当存储和添加这些文件时,它们都以二进制的形式添加。显然,我仍然可以获得版本控制的好处,但它会失去很多效率,文本文件的差异化等等。我已经证实这些文件只是文本。
% F5 h+ i* I$ c- b/ B为什么要这样做?) b- \# V* _) y: W8 F* s( k
我应该怎么做才能避免这种情况?: M  d' w8 Z- t3 G' U: L
有没有办法让汞改变他们对这些文件的看法?
$ F* ~: {- m4 d( k, O这是变更集日志的片段:( ]' ?7 l, h3 I! V+ g) F% c
            496.1 Binary file SQL/SfiData/Stored Procedures/dbo.pFindCustomerByMatchCode.StoredProcedure.sql has changed   497.1 Binary file SQL/SfiData/Stored Procedures/dbo.pFindUnreconcilableChecks.StoredProcedure.sql has changed   498.1 Binary file SQL/SfiData/Stored Procedures/dbo.pFixBadLabelSelected.StoredProcedure.sql has changed   499.1 Binary file SQL/SfiData/Stored Procedures/dbo.pFixCCOPL.StoredProcedure.sql has changed   500.1 Binary file SQL/SfiData/Stored Procedures/dbo.pFixCCOrderMoneyError.StoredProcedure.sql has changed感谢您提前帮助吉姆% n9 {  b" V2 [& M
                                                               
$ j4 z  f$ @) L- i& l    解决方案:                                                                ) Z2 c- m% ?4 Y. ]% Y
                                                                为了符合Mercurial实际上,二进制文件的视图并不跟踪文件类型,这意味着用户无法将文件标记为二进制文件或非二进制文件。
% P. J$ E( {  o9 b正如tonfa和Rudi所述,Mercurial检查文件中是否存在NUL字节确定文件是否为二进制文件。UTF- [16 |
5 [' g+ \( h+ B; Q# B$ \32]文件几乎可以保证NUL字节。
6 q3 c  H0 F: M3 o$ X要修复这个问题,必须确保文件的使用UTF-8而不是UTF-16编码。理想情况下,当导出时,数据库应该有Unicode编码设置。如果不是这样,另一个选择是编写一个预提交钩来执行此操作(请参见如何执行)Python将文件转换为UTF-8作为开始),但你必须非常小心要转换的文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则