在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作为开始),但你必须非常小心要转换的文件。 |
|
|
|
|
|