2013-08-16 81 views
15

我工作的一個遊戲(雷神之錘3)以及使用SVN倉庫來存儲代碼樹。樹還包含遊戲數據(紋理,模型等)。這必須放入PK3存檔(具有不同擴展名的標準ZIP存檔)。我在一個簡單的腳本中使用ZIP實用程序來創建PK3存檔。如何從ZIP檔案中排除.svn文件夾?

我的問題是,遊戲數據也版本,以及包含數據的文件夾堆滿了所有那些「.svn文件」子文件夾。當然,ZIP將這些子文件夾包含在檔案中。它們不是遊戲所需要的。有沒有簡單的方法告訴ZIP從檔案中排除所有'.svn'子文件夾?

+0

你用什麼工具來創建'.PK3'歸檔?也許這個工具需要一個「忽略的文件擴展名」參數,或者是一個不包含'.svn'文件夾中的任何文件的白名單。 –

+0

我使用標準的Linux ZIP實用程序(及其在Windows下的GNU端口)。它具有排除文件的選項,但不包含目錄AFAIK。 – speaker

回答

4

而不是直接荏苒源代碼樹,爲什麼沒有你的腳本導出源樹的副本,而不.svn目錄?有一個工具:svn export

+0

這是你唯一真正的答案。但值得一提的是,在svn 1.7中,工作副本發生了變化 - 只有一個。svn目錄在存儲庫的頂層,而不是在每個目錄中。這可能有助於(特別是如果紋理大,需要一些時間來導出) – thekbb

+0

感謝您指出了這一點。似乎我擁有該存儲庫的Debian VPS從Collabnet運行SVN 1.6.12。我將不得不升級到1.7或更高版本,'.svn'文件夾將會消失。 – speaker

+0

當你在等待時,'svn export'從第一天開始就存在。所以我真的建議你看看。 :-) – Rytmis

25
zip -r output.zip inputdir -x "**/.svn**" 

這將排除一切在任何子文件夾開頭「的.svn」

+0

你能解釋語法爲什麼報價需要需要 – flu

+3

報價,以避免?殼膨脹在你有匹配的圖案的電流路徑的一些文件或文件夾的情況。 '-r'指以遞歸方式行進的輸入路徑(inputdir),而雙分''**表示匹配的子文件夾 –

1

我使用的是Windows 7
烤成OS您可以Right-Click上的任何文件夾並選擇‘Send to’,然後單擊「 Compressed (zipped) folder「。

有一個怪癖,我發現這裏的Windows將只(按設計或神祕的功能),以點壓縮第一文件夾(。)前綴:
Windows 7 「send to compressed (zip) folder」 omits some folders whose name begins with a dot

這種怪癖讓我想...
如果我創建了一個空「誘餌」點(。)前綴文件夾而不是壓縮我.svn文件夾?

Windows將不允許您只需右鍵單擊並創建一個帶點(。)前綴的文件夾。
使用CMD,我在同一個目錄下的「.svn」文件夾,在跑「mkdir .skip_svn
我用這個答案的數字,一出來:
How do I create a folder name that starts with a dot in Windows 7?

壓縮的目錄保存我的小誘餌「 .skip_svn 「文件夾忽略」 .svn「文件夾中。
沒有命令行界面要安裝的第三方壓縮軟件。
我意識到這可能不是很多人的理想選擇 - 這決不是一個確定的解決方案。
這就是我需要做的全部備份更快他們現在佔用了很多較少空間。