2014-12-23 72 views
0

我有一個充滿數據的大型存儲庫(圖像,視頻,文本文件等),雖然我希望所有這些都進入實時服務器,但我不需要檢查那爲我的測試環境(我沒有視頻罰款)。如何從SVN更新中排除文件類型

有沒有辦法在檢出工作副本時排除視頻文件類型?

目前我使用一個腳本來設置文件夾的深度,我知道這些文件夾會將視頻清空,但這不是完美的解決方案,因爲它們有時包含子文件夾或海報圖像。

回答

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以及immediates,emptyinfinity)進行修剪。

你應該做的是重新安排你的回購,這樣所有的視頻都在同一個目錄中,而不是散落在四周。您必須更改您的JavaScript,HTML以及任何可能訪問這些文件的其他文件(PHP?)。這將使您的工作更輕鬆,並使您的服務器更加靈活。例如,您可能希望將視頻安裝到高速訪問分區中(或至少是其自己的分區),因此,在同一個磁盤分區上沒有40 GB的視頻與其他文件相同。

+0

是的,在每個文件上運行'svn up'可能不是一個完美的解決方案,但我一定會看看'svn ls -R'。如果我找到了一些可行的解決方案,我一定會在這裏發佈。 – KotuS

+0

建立你想要更新的文件列表是可能的,然後將它們作爲單個參數傳遞(儘管你必須確保你不會超出命令行緩衝區)。這可能會更快。 –