【问题标题】:Is it best practice that create a new repository for every project?为每个项目创建一个新的存储库是最佳实践吗?
【发布时间】:2018-05-22 09:23:42
【问题描述】:

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

   repository1
     --> trunk
     --> branches

   repository2
     --> trunk
     --> branches

   repository3
     --> trunk
     --> branches

   repository4
     --> trunk
     --> branches

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

【问题讨论】:

  • 要考虑的一点是,文件外部目前只能在同一个存储库中
  • 这取决于你所说的 repository 是什么意思。单个存储库通常包含问题中概述的结构中的许多项目和模块。见this link
  • 当一个项目有一个专门的repo时,管理依赖和共享项目会很困难。最好使用单个 repo。有什么具体的理由需要单独回购吗?
  • 是的。我想独立的修订号和 redmine 独立的版本号。我用redmine。要创建一个项目,我必须创建一个新的存储库。
  • @royalTS 这实际上不是真的。假设 SVNParentPath 相同,您可以使用来自另一个存储库的外部文件。例如,如果您的服务器的“repos”目录在同一父路径中有一堆单独的 repos,您可以使用svn:externals 属性并使用^/../repo_name/path/to/folder 链接到单独存储库中的外部。

标签: svn version-control repository


【解决方案1】:

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

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

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

  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。为了让他的新模块正常工作,他/她需要使用我们所说的 external 来连接模块 1 和 3。开发人员 B 也可以在新模块上工作, YourModules 中的 module5。但他/她需要模块 2 和 3。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多