为了考虑到理查德的评论和斯蒂恩的回答,我必须独立于mime文件类型并且独立于CVS中标记的类型文件,我正在寻找如何将所有文件视为cvs2svn中的二进制文件?也许是不可能的?
请理查德(或其他人),您能否告诉我如何知道给定文件的CVS中的标记类型?
您好,
如何将所有文件视为二进制文件?
所有16次传递(cvs2svn)都正确完成但是几个二进制文件已损坏(如.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 FAQ之后,我尝试了很多其他选项,但同样的文件总是被破坏了。
感谢。基督教。
答案 0 :(得分:4)
Subversion使用启发式算法来确定文件是否为二进制文件。首先,它检查是否设置了mime-types-file
配置参数,并使用它来将文件映射到mime-types。如果没有找到这样的配置,它会查看1024个第一个字节,如果超过15%不在ASCII范围内,或者其中任何一个都是空值,则该文件被视为二进制。要专门设置给定文件类型的mime类型,必须使用auto props。
请注意,如果subversion将您的文件确定为mime-type image/x-xbitmap
或image/x-xpixmap
,则会将其视为文本文件
自动道具会影响svn add
和svn import
操作,并使用runtime configuration进行设置,这些操作通过命令行选项或 config 指定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 = FILE
以Subversion的配置文件格式指定文件,其文件名为 [auto-props]部分可用于设置任意属性 Subversion存储库中的文件基于它们的文件名。 (该 必须存在[auto-props]节标题;其他部分 配置文件,包括enable-auto-props设置,将被忽略。) 文件名与不区分大小写的文件名模式匹配, 与Subversion的行为一致。自动道具文件可能 有这样的内容:
[auto-props] *.txt = svn:mime-type=text/plain;svn:eol-style=native *.doc = svn:mime-type=application/msword;!svn:eol-style
因此,使用命令行开关--auto-props
和自动道具
文件,你应该能够获得所需的功能
cvs2svn
脚本
答案 1 :(得分:3)
关于如何让cvs2svn将所有文件视为二进制文件的问题,我只能指向常见问题解答中与EOL相关的部分
从版本2.0开始,cvs2svn的默认行为是将所有文件视为二进制文件,但明确确定为文本的文件除外。
同样来自FAQ:
如果文件在CVS中标记为二进制文件(使用cvs admin -kb,则cvs2svn将始终将文件视为二进制文件。
要查看文件是否标记为二进制文件,请在CVS中的文件中查找-kb选项。在WinCVS中,有一些列和编码。
不幸的是,我没有为您提供解决方案,但我会尝试简化您的命令参数,以专注于那些文件无法正常工作的内容。使用--auto-props文件将为您提供对每个文件的最终控制。如果你的CVS文件是“干净的”(意味着所有文件都被正确地提交为文本和二进制文件),那么--default-style = native参数应该会给出最好的结果。
祝你好运,让我们知道什么对你有用。
答案 2 :(得分:1)
我推断不可能强制cvs2svn将所有文件都视为二进制文件。