2

为了考虑到 Richard 的评论和 Steen 的回答,我必须独立于类型 mime 文件和独立于 CVS 中标记的类型文件进行指定,我正在寻找如何将所有文件视为 cvs2svn 中的二进制文件?也许是不可能的?

请理查德(或其他人),您能告诉我如何知道 CVS 中给定文件的标记类型吗?


您好,如何将所有文件视为二进制文件?
(cvs2svn 的)所有 16 次通过都正确完成,但有几个二进制文件已损坏(如 .gif)。没有被视为二进制文件!

我使用的命令行是:

python C:\noinstaller\cvs2svn-2.2.0\cvs2svn -s "SVN_REPO" "CVS_REPO" --use-cvs
--encoding=latin1 --mime-types=svn-mime-types --eol-from-mime-type 
--keywords-off --sort=C:\noinstaller\UnxUtils\usr\local\wbin\sort.exe

阅读CVS2SVN 常见问题解答后,我尝试了许多其他选项,但相同的文件总是损坏。

谢谢。基督教。

4

3 回答 3

4

Subversion 使用启发式算法来确定文件是否为二进制文件。首先,它检查是否mime-types-file设置了配置参数,并使用它来将文件映射到 MIME 类型。如果没有找到这样的配置,它会查看前 1024 个字节,如果超过 15% 不在 ASCII 范围内或其中任何一个为空值,则该文件被视为二进制文件。要专门设置给定文件类型的 MIME 类型,您必须使用auto props

请注意,如果 subversion 确定您的文件是 mime-typeimage/x-xbitmapimage/x-xpixmap,它将被视为文本文件

Auto-props 影响svn addsvn import操作,并使用运行时配置进行设置,这些配置通过命令行选项或在 subversion 的配置文件中指定,位于 subversion 安装 conf 目录中。应设置以下值:

# default is 'no', so we enable auto props with
enable-auto-props = yes

# specify absolute path to mime.types like file, e.g.
mime-types-file = /etc/mime.types

这应该正确映射您的二进制文件。

编辑:来自cvs2svn手册:

--auto-props=文件

以 Subversion 配置文件的格式指定一个文件,其 [auto-props] 部分可用于根据文件名设置 Subversion 存储库中文件的任意属性。(必须存在 [auto-props] 部分标题;配置文件的其他部分,包括 enable-auto-props 设置,将被忽略。)文件名与文件名模式匹配,不区分大小写,与 Subversion 的行为一致。auto-props 文件可能包含如下内容:

[auto-props]
*.txt = svn:mime-type=text/plain;svn:eol-style=native
*.doc = svn:mime-type=application/msword;!svn:eol-style

因此,使用命令行开关--auto-props和自动道具文件,您应该能够获得 cvs2svn脚本的所需功能

于 2009-02-03T19:06:09.330 回答
3

关于如何让 cvs2svn 将所有文件视为二进制的问题,我只能指向 FAQ 中与EOL相关的部分

从 2.0 版开始,cvs2svn 的默认行为是将所有文件视为二进制文件,但明确确定为文本的文件除外。

同样来自常见问题解答:

如果一个文件在 CVS 中被标记为二进制文件(使用 cvs admin -kb,那么 cvs2svn 将始终将该文件视为二进制文件。

要查看文件是否标记为二进制文件,请在 CVS 中查找文件的 -kb 选项。在 WinCVS 中,有这方面的列以及编码。

不幸的是,我没有适合您的解决方案,但我会尝试简化您的命令参数,以专注于那些不适合这些文件的内容。使用 --auto-props 文件可以让您最终控制每个文件。如果您的 CVS 文件是“干净的”(意味着所有文件都以文本和二进制文件的形式正确提交),那么 --default-style=native 参数应该会给出最好的结果。

祝你好运,让我们知道什么对你有用。

于 2009-02-04T13:05:30.697 回答
1

我推断不可能强制 cvs2svn 将所有文件视为二进制文件。

于 2009-02-13T10:30:42.450 回答