Svn 为每个项目创建一个新的存储库是最佳做法吗?

Svn 为每个项目创建一个新的存储库是最佳做法吗?,svn,version-control,repository,Svn,Version Control,Repository,我们在一个subversion存储库中有20个项目。我们将这些项目分为不同的存储库。(每个项目相互独立)。这是最佳做法吗?所以像这样: repository1 --> trunk --> branches repository2 --> trunk --> branches repository3 --> trunk --> branches repository4

我们在一个subversion存储库中有20个项目。我们将这些项目分为不同的存储库。(每个项目相互独立)。这是最佳做法吗?所以像这样:

   repository1
     --> trunk
     --> branches

   repository2
     --> trunk
     --> branches

   repository3
     --> trunk
     --> branches

   repository4
     --> trunk
     --> branches

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

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

根据我在工作中的个人经验,我们为完全不同的项目(不依赖于项目的项目)创建了不同存储库的子集。然而,在开发一个包含很多组件的项目时,我们也使用“子模块”类型的目录结构

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

  repository1
     --> trunk
     --> branches
此repo表示包含此存储库的任何项目都可以使用的一组功能。不依赖于任何其他存储库

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

  repository2
     module1
       --> trunk
       --> branches

     module2
       --> trunk
       --> branches

     module3
       --> trunk
       --> branches

     module4
       --> trunk
       --> branches

     module5
       --> trunk
       --> branches

     MyModules

     YourModules
我之所以使用这种方法,是因为这些模块可以/将被彼此使用。例如,开发人员A可能正在开发一个新模块,MyModules中的module4。为了让他的新模块正常工作,他/她需要在模块1和3中使用我们所说的。开发人员B也可以开发一个新模块,即您的模块中的模块5。但他/她需要模块2和3

通过使用此方法的externals,用户基本上可以设置签出文件夹(MyModules和YourModules)。因此,当开发人员A签出MyModules时,它将分别签出模块1、3和4。同样,对于开发者B来说,他们用2、3和5检查模块。这样做的好处是,所有用户仍然“指向”模块1、2和3的基本目录,而它们是彼此独立的子项目


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

>要考虑的一点是,文件外部只能在同一个存储库中,在MimeNT中取决于存储库的含义。单个存储库通常包含问题中所述结构中的许多项目和模块。请参阅。如果项目有专门的回购协议,则很难管理依赖关系和共享项目。最好使用单一回购。有没有具体的理由进行个人回购?有。我想要独立的版本号和在redmine中独立的版本号。我用红色的。要创建一个项目,我必须创建一个新的存储库。@royalTS这实际上不是真的。如果SVNParentPath相同,则可以使用来自另一个存储库的外部存储库。例如,如果您的服务器具有“repos”目录,并且在同一父路径中有一组单独的repo,则可以使用
svn:externals
属性并使用
^/./repo\u name/path/to/folder
链接到单独存储库中的外部。