2013-08-16 83 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“文件夹中。
没有命令行界面要安装的第三方压缩软件。
我意识到这可能不是很多人的理想选择 - 这决不是一个确定的解决方案。
这就是我需要做的全部备份更快他们现在占用了很多较少空间。