创建subversion存储库的最佳实践?

时间:2008-10-03 13:59:02

标签: visual-studio svn visualsvn

我们的团队(5-10名开发人员)计划为我们的.NET(Visual Studio)项目/解决方案(VisualSVN Server,TortoiseSVN / VisualSVN)采用Subversion

组织新的存储库树的最佳方式是什么?是否可以使用一个大型存储库,或者为每个解决方案/产品线等创建不同的存储库更好吗?

我们的项目可以通过这种方式进行分类(示例):

  • 主要产品系列
    • 主要网络应用程序
      • 图书馆1
      • 图书馆2
      • ...
    • Windows客户端
    • 另一个Windows客户端
    • Windows服务
  • 工具
    • 工具A
    • 工具B
  • 产品线2
    • 软件1
    • 软件2
  • 产品系列3
    • App 1
    • App 2

8 个答案:

答案 0 :(得分:17)

答案 1 :(得分:12)

通常,您希望在任何需要不同访问权限的情况下使用单独的存储库(即某些开发人员应该具有对一个项目的提交权限,而不是另一个项目,或者一个项目具有公共只读匿名接口但是另一个没有)。

如果您不需要该级别的访问控制,则需要一个存储库中的所有内容,特别是如果您需要能够在项目之间复制或移动文件(即项目可能共享代码)。

将您的主干/标签/分支拆分为与您可能作为单个包发布的一大块代码相对应的任何级别(即考虑您要标记的位置)。这对于一开始就没有关键,因为这些内部与任何其他文件夹没有什么不同,所以你可以稍后移动一些东西,当然它更整洁,不会出现这个问题。

答案 2 :(得分:6)

  • SVN管理立场我更喜欢1 库中。
  • 程序员的观点我更喜欢1 库中。
  • Server Administrator我更喜欢1 repostitory。
  • 安全立场确实如此 我不想放你所有的 鸡蛋放在一个篮子里。

您的存储库结构对您的业务和它的产品来说有点独特。我们把我们放在一个存储库中。我们的结构有点像这样。

  • /
    • 项目
      • 项目名称
        • 躯干
        • 分支
        • 标记
    • 文档
      • 项目1
    • 共享库
      • 超级字符串类
    • 小型公用事业
      • vim enhance X

答案 3 :(得分:4)

我们使用一个大型存储库,只需在子文件夹(/ project1,/ project2等)中构建所有内容,这似乎工作正常。

Apache项目有一个huge svn repository,它似乎对他们没问题! :)

在组织方面,你给出的结构看起来很合理。我认为,只要它是理性的(即将每个工具与每个项目混合在一起可能是一个坏主意等),任何事情都会发生。所以选择适合你的东西(工具/,项目/等)。 Subversion也非常支持在存储库中移动内容,因此您可以随时更改。

答案 4 :(得分:3)

我们有一个像这样的结构的回购。任何由多个人和/或在活动开发中工作的东西都在主文件夹下设置了trunk / tags / branch /。

我们可能会将那些trunk-tags-branch folderset放在您列出的每个子文件夹下,除非是一个或两个未处于活动开发状态的库。

答案 5 :(得分:1)

尝试将定期访问的材料(代码,脚本)与'一次写入分开,并提交备份'。为了更改几行代码,必须签出/更新数以千计的jpegs会很快变得迟钝。

答案 6 :(得分:1)

我们为每个项目都有单独的回购;但主要原因是出于访问原因加上如果客户想要他们的来源副本我们可以用历史记录给他们而不用太大惊小怪。如果你看看conf中的配置文件,那么拥有适用于所有项目的通用配置文件就不那么难了。我们这样做:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz

AuthZ的:

[groups]
AOS = nathan,mark

[AOS:/]
@AOS = rw
frew = rw

然后当然是passwd:

[users]
frew = password
nathan = awesome
mark = station

答案 7 :(得分:0)

我正在使用一个存储库和许多项目,如下所示:

Projects
   Project Name
      trunk
      branches
      tags

我唯一关心的是备份和恢复。 SVN备份在存储库级别完成,因此还原将恢复所有项目而不是仅一个。

冯吉荣