在结帐时处理大目录

时间:2010-06-01 18:17:10

标签: svn

我正在尝试为我正在处理的网络应用程序提供版本控制流程。目前,我的主要绊脚石是两个巨大的目录(都超过4GB)。只有少数人需要在巨大的目录中处理事情;大多数人甚至不需要看到它们中的内容。我们的目录结构类似于:

/
  --file.aspx
  --anotherFile.aspx
   - / coolThings
  ---- coolThing.aspx
   - / bigFolder
  ----someHugeMovie.mov
  ---- someHugeSound.mp3
   - / anotherBigFolder
 ----...

我相信你能得到这张照片。

很难证明必须提取8GB数据的结账,而这些数据对开发人员来说可能毫无用处。我知道,它只有一次,但即使曾经一次真的令人沮丧(并且会让我更难说服每个人使用源代码控制)。 (另外,干净的结账会非常慢。)这些文件夹必须在Web应用程序中可用。

我该怎么办?我已经考虑过大文件夹的单独存储库。这样,只有在需要时才下载;但是我如何管理这些检查到我们的开发服务器?我还考虑过不尝试对这些文件夹进行版本控制:只需直接在Web服务器上更新它们......但我并不喜欢这个想法。是否有一些神奇的方法可以简单地从我没有找到的结帐中排除目录? (很确定没有。)

当然,总是可以选择放弃,咬紧牙关,接受下载8个无用的GB。

你说什么?你以前遇到过这个问题吗?你是怎么解决的?

2 个答案:

答案 0 :(得分:0)

没有任何迹象表明subversion中的布局需要与您在生产中部署的内容相匹配。您找到了最简单,最好的解决方案 - 将这些大型文件移动到另一个存储库(另一个优势是,当您分支此结构时,您也不会分支大型文件)。然后,您只需更新部署脚本以从两个存储库位置(而不是一个)提取,并将文件放在生产中的正确位置。

如果您还没有部署脚本,现在是时候写一个了。即使它只包含两行 - 从两个存储库中提取的svn命令 - 最好是让一个脚本在一个命令中完成所有操作,而不是每次都要输出它。在重新启动服务器之前对内容运行测试也是一个好主意,因此这些测试也可以存在于部署脚本中。

答案 1 :(得分:0)

我感觉到你的痛苦。我曾经在一个20GB结账的项目中工作过。同时在后备箱和三个分支上工作将填满我的HD。我讨厌它。

你可以将这个东西分成你的存储库中的两个文件夹,一个(“main”)包含所有对每个人都有趣的东西,另一个(“大”)只包含大多数人没有的8GB东西关心。 “big”文件夹使用externals引用“main”。

/
-/main
--file.aspx
--anotherFile.aspx
--/coolThings
----coolThing.aspx
----...
-/big
--/bigFolder
----someHugeMovie.mov
----someHugeSound.mp3
--/anotherBigFolder
-/everything

大多数人只会结帐“主要”。有些会结账“大”,通过外部,也会得到“主要”。

请注意,在标记时需要注意使用外部,因为您希望将标记版本的外部链接到特定修订版。