cvs2svn mime类型

时间:2009-02-03 15:14:28

标签: cvs cvs2svn

为了考虑到理查德的评论和斯蒂恩的回答,我必须独立于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之后,我尝试了很多其他选项,但同样的文件总是被破坏了。

感谢。基督教。

3 个答案:

答案 0 :(得分:4)

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

请注意,如果subversion将您的文件确定为mime-type image/x-xbitmapimage/x-xpixmap,则会将其视为文本文件

自动道具会影响svn addsvn 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将所有文件都视为二进制文件。