26

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

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

我们的项目可以这样分类(示例):

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

8 回答 8

17

我的灵感来源:

于 2008-10-03T15:14:18.047 回答
12

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

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

将你的trunk/tags/branch拆分放在与你可能作为单个包发布的代码块相对应的任何级别(即考虑你将标记的位置)。一开始这并不重要,因为它们在内部与任何其他文件夹没有什么不同,所以你可以稍后移动东西,当然没有这个问题会更整洁。

于 2008-10-03T14:10:52.137 回答
6
  • SVN 管理观点我更喜欢 1 个存储库。
  • 程序员的立场我更喜欢 1 个存储库。
  • 服务器管理员 我更喜欢 1 个存储库。
  • 从安全角度来看,最好不要把所有的鸡蛋都放在一个篮子里。

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

  • /
    • 项目
      • 项目名
        • 树干
        • 分支机构
        • 标签
    • 文档
      • 项目一
    • 共享库
      • 超弦类
    • 小型公用事业
      • vim 增强 X
于 2008-10-03T14:08:20.440 回答
4

我们使用一个大存储库,并将所有内容都结构化在子文件夹(/project1、/project2 等)中,这似乎工作正常。

Apache 项目有一个巨大的 svn 存储库,它似乎对他们来说还不错!:)

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

于 2008-10-03T14:01:40.033 回答
3

我们有一个结构类似的单一回购。任何由几个人以上和/或在积极开发中工作的东西都在主文件夹下设置了trunk/ tags/ branch/。

我们可能会将那些 trunk-tags-branch 文件夹集放在您列出的每个子文件夹下,除了可能没有处于积极开发中的一两个库。

于 2008-10-03T14:01:48.877 回答
1

尝试将定期访问的材料(代码、脚本)与“一次写入并提交到备份”的内容分开。仅仅为了更改几行代码就必须签出/更新数千个 jpeg,这很快就会变得乏味。

于 2008-10-04T07:35:45.317 回答
1

我们对每个项目都有单独的回购;但主要原因是访问原因加上如果客户想要一份他们的来源的副本,我们可以将其与历史一起提供给他们而不会大惊小怪。如果您查看 conf 中的配置文件,那么拥有一个适用于所有项目的通用配置文件并不难。我们这样做:

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

授权:

[groups]
AOS = nathan,mark

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

然后当然是密码:

[users]
frew = password
nathan = awesome
mark = station
于 2008-10-06T15:54:50.207 回答
0

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

Projects
   Project Name
      trunk
      branches
      tags

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

吉荣

于 2014-03-06T20:55:02.727 回答