我应该为每个网站使用一个SVN存储库,还是为单个存储库中的每个站点创建子目录?

时间:2010-01-12 14:04:58

标签: svn version-control

我目前正在本地开发Web服务器上设置SVN,想知道是否应该为服务器上的每个网站创建一个存储库,或者是否包含每个站点的子目录的单个存储库? / p>

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

一般来说,我建议每个存储库模型使用一个项目。

有些人对此有潜在的垮台,需要多次结账和共享代码等。

使用svn:externals关键字在svn中使用位于另一个存储库中的代码非常简单。这允许您将目录从另一个存储库拉入存储库的任何给定目录。

多个存储库获得的收益是多倍。

  • SVN特别是在办理大型结账时会减慢速度。在非常大的结账时,所有正常命令将显着延长。

  • 如果您开始与其他开发人员共享工作,维护成本会增加,因为您可能需要将其锁定在某些“项目目录”之外,同时允许他们访问其他人。

  • 如果您销售部分工作,买方可以申请来源历史记录。拆分大型SVN存储库是一项非常繁琐的工作,在某些情况下可能会证明是站不住脚的。

  • 简单。多个存储库可以为您提供有关如何拆分代码的非常明确的指导。如果使用得当,这将导致更清晰的分离,因此可以作为代码封装的扩展。

就Dave提到的服务器成本而言,很有可能以这样一种方式设置服务器,即登录到该服务器并在正确的目录中运行svnadmin create足以创建新的存储库。

个人经历

支持所有这些想法,我将与您分享我对该主题的一些个人经验。

我也被称为Kaelten,我创立了WowAce.com。直到最近,我们还在网上运行了一个最大的共享svn存储库。它有超过82,000个修订版和超过1.5万个项目代表其历史上的各个点,超过300万行代码。

在此大小的存储库上磁盘空间使用量很大,修订版数字丢失意义,因为它们都在所有项目中共享。最后,我们不得不想出一个将它拆分的系统,将巨大的巨型数千兆字节回购切成小而可用的东西。

最终,它让我做了很多工作,让它工作得很清楚,而且比建立一个运作良好的新系统更加分散。 WowAce.com和CurseForge.com仍然是魔兽世界和其他一些游戏中最大的插件库之一,除了现在它们都以一种非常理智的方式分开。

答案 1 :(得分:3)

如果网站之间存在依赖关系,那么您应该选择一个存储库,因为它可以更容易地回滚到稳定版本和类似的东西。

如果您有多个完全分离的网站,则可以使用不同的存储库。如果您这样做,我预计不会出现任何性能问题。

答案 2 :(得分:2)

svn/repo下的一个存储库对我来说非常有用。我创建了一个单独的svn目录结构,每个网站的trunk下至少包含一个svn/repo/目录。

例如:

svn/repo
  /website1/trunk
  /website2/trunk
  /website3/trunk
  /website3/branches (if needed)
  /website3/tags (if needed)

根据我的经验:

  • DRY - 多个存储库 创造更乏味的重复系统 管理工作
  • KISS - 一个回购是最简单的 没有牺牲的解决方案 能力
  • You ain't gonna need it - 不管我是否在工作 单独或与10个开发者,一个回购 总是工作和多个回购原因 头痛