为每个项目创建一个新的存储库是最佳实践吗?

Is it best practice that create a new repository for every project?

我们在一个 Subversion 存储库中有 20 个项目。我们将这些项目划分到不同的存储库中。 (每个项目都是相互独立的)。这种方式是最佳实践吗?所以像这样:

   repository1
     --> trunk
     --> branches

   repository2
     --> trunk
     --> branches

   repository3
     --> trunk
     --> branches

   repository4
     --> trunk
     --> branches

每个项目都必须有自己的存储库?对吗?

这取决于你的开发环境和情况。

根据我个人的工作经验,我们为完全不同的项目(不依赖于项目的项目)创建了不同存储库的子集。但是,在开发包含大量组件的项目时,我们也会使用 "sub-module" 类型的目录结构。

例如,我们有一个核心项目:

  repository1
     --> trunk
     --> branches

此存储库代表一组功能,包含此存储库的任何项目都可以使用这些功能。不依赖于任何其他存储库。

但是,我有另一个存储库用于开发一堆组件。

  repository2
     module1
       --> trunk
       --> branches

     module2
       --> trunk
       --> branches

     module3
       --> trunk
       --> branches

     module4
       --> trunk
       --> branches

     module5
       --> trunk
       --> branches

     MyModules

     YourModules

我之所以使用这种方法,是因为这些模块can/will可以互相使用。例如,开发人员 A 可能正在开发一个新模块,MyModules 中的 module4。为了让他的新模块工作,he/she 需要使用我们所说的 external 到模块 1 和 3。开发人员 B 可以工作还有一个新模块,YourModules 中的 module5。但是 he/she 需要模块 2 和 3。

通过使用此方法的外部组件,用户基本上可以设置结帐文件夹(MyModules 和 YourModules)。因此,当开发人员 A 签出 MyModules 时,它会分别签出模块 1、3 和 4。同样对于签出 YourModules 的开发人员 B,他签出 2,3 和 5。这样做的好处是所有用户仍然 "pointing" 到模块 1、2 和 3 的基本目录,同时它们是彼此独立的子项目。

我知道这有点罗嗦,但我希望我能帮助传达有关这两种方法的案例用法。 :)