1

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

- No changes -
Diff Legend

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

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

4

1 回答 1

3

Subversion 并没有真正的文本与二进制文件模式。所有文件都以相同的格式存储。

在 Subversion 中,所有二进制文件意味着 Subversion 不应尝试合并此文件,或对其进行文本比较。

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

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

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

您所做的是设置一个mime 类型文件,然后将mime-types-file条目指向该文件。

MIME 类型文件只是一个两列事务,第一列是MIME类型,第二列是后缀。您需要添加如下内容:

text/sql              sql

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

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

$ svn propdel svn:mime-type *.sql
$ svn commit -m"Making my SQL files text files"
于 2013-09-25T00:32:23.537 回答