如何从SVN更新中排除文件类型

时间:2014-12-23 13:47:50

标签: svn

我有一个装满数据的大型存储库(图像,视频,文本文件等等),虽然我希望所有这些都能进入实时服务器,但我不需要为我的测试环境检查一下(没有视频,我没事。)

签出工作副本时有没有办法排除视频文件类型?

目前我使用的脚本设置了我知道将要清空视频的文件夹深度,但这并不是完美的解决方案,因为它们有时包含子文件夹或海报图片。

1 个答案:

答案 0 :(得分:1)

我找到了有用的东西:

$ svn co --depth=empty $REPO/branch/$proj
$ cd $proj
$ svn ls -R | while read $file
do
    [[ ${file%%*.} == ".mp4" ]] && continue   # Video or whatever
    if [[ ${file%%*/} != $file ]]             # Does file name end in a slash?
    then
        svn up --set-depth=empty "$file"      # Directory
    else
        svn up --set-depth=infinity "$file"   # File
    fi
done

然而,由于svn up年必须转到服务器,然后等待更新发生,并为每个文件执行此操作,这是极其缓慢的。也可能存在包含空格的名称问题,尽管这对我来说不是问题。我有一些文件包含一个或两个有效的空间,但如果一个文件包含两个或多个空格或一个制表符,这可能不起作用。

尝试一下,但我认为您当前的方法可能会更好。您始终可以使用svn ls -R查找视频确实存在的位置,然后通过--set-depth(也可以包括exclude以及immediatesempty进行修剪,和infinity)。

您应该做的是重新安排您的回购,以便所有视频都在同一目录中而不是分散在周围。您将不得不更改您的JavaScript,HTML以及访问这些文件的其他文件(PHP?)。这将使您的工作更轻松,并使您的服务器更灵活。例如,您可能希望将视频安装到高速访问分区 - 或者至少是它自己的分区,因此您在与其余文件相同的磁盘分区上没有40千兆字节的视频。