Subversion文件错误地提交为二进制文件

时间:2013-09-24 23:22:23

标签: svn

我们遇到过这样的问题:员工意外地或者错误地将SQL文件* .SQL文件作为二进制而不是文本提交。有没有一种简单的方法可以将以* .SQL结尾的文件的Collabnet Subversion中的格式更改为文本。问题是Subversion在文本文件和文件之间执行DIFF时没有正确显示修订版本。二进制文件。如果我们再次作为文本提交,则它是文本DIFF文本。 当有变化时,文本到二进制DIFF显示如下:

- No changes -
Diff Legend

–   Removed lines
+   Added lines
<   Changed lines
>   Changed lines

转换或阻止错误登记的简单方法? 任何方式subversion可以检查文件扩展名是否为* .sql并转换/阻止它作为二进制提交? 有没有办法识别所有以* .SQL结尾的文件,这些文件在subversion中保存为二进制而不是文本? 这可以在subversion中完成,还是在没有任何其他工具的情况下使用Tortoise完成?

1 个答案:

答案 0 :(得分:3)

Subversion实际上没有带文件的文本与二进制模式。所有文件都以相同的格式存储。

在Subversion中,所有二进制文件意味着Subversion不应该尝试合并此文件,或者对其执行文本差异。

Subversion通过设置名为svn:mime-type的文件属性来确定文件是否为文本文件。如果未设置,则文件是文本文件。如果已设置,则假定该文件为二进制文件。 (如果mime-type以text/开头,它可能仍被视为文本文件,但我不是100%肯定...)

您需要做的是配置mime类型文件以了解*.sql文件是文本文件。如果您使用Apache httpd作为Subversion服务器,则可以编辑mime-types文件,该文件通常位于conf所在的httpd.conf目录中。

您也可以通过在Unix中设置$HOME/.subversion/config文件,或在Windows上编辑Subversion注册表项来基于每个用户进行设置。

您要做的是设置 mime types 文件,然后将mime-types-file条目指向该文件。

MIME types file只是两列事件,第一列中的 MIME类型和第二列中的后缀。你需要添加这样的东西:

text/sql              sql

这将保证以*.sql结尾的任何文件都是文本文件。

对于您输入的文件,只需删除它们上的属性:

$ svn propdel svn:mime-type *.sql
$ svn commit -m"Making my SQL files text files"