【问题标题】:Should I store all projects in one repository or multiple?我应该将所有项目存储在一个存储库中还是多个存储库中?
【发布时间】:2010-09-12 22:14:48
【问题描述】:

我目前正在使用 TortoiseSVN 来管理我目前正在进行的几个项目。当我第一次将所有内容都移到源代码控制中时,我并不确定应该如何布置所有内容,所以我最终将每个项目都放入了自己的存储库中。

我想知道将它们全部移动到一个大存储库并将它们拆分到项目文件夹中对我来说是个好主意吗?其他人都做什么?

目前它们都不共享通用代码,但将来可能会。如果他们都在一起,会不会更容易管理。

谢谢。

【问题讨论】:

  • 有足够声誉的人可以将主题重命名为“源代码控制:将所有项目存储在单个存储库中吗?”当前标题具有误导性。

标签: svn version-control tortoisesvn repository


【解决方案1】:

在一定程度上取决于“项目”的含义。

我有一个通用的本地存储库,其中包含我编写的随机内容(包括我的网站,因为它很小)。一个单用户本地 SVN 存储库不会出现明显的性能问题,除非您花了很多年的时间打字。到那时SVN无论如何都会更快。所以我还没有后悔把所有的东西都扔到一个存储库里,尽管里面的一些东西完全不相关,除了我写的所有东西。

如果“项目”意味着“课堂作业”,或“我用来驱动我的 TiVo 的脚本”,或“我在学习一门新语言方面的进展”,那么为每个项目创建一个 repos 似乎有点不必要我。再说一次,它也不需要任何费用。所以我想我会说不要改变你正在做的事情。除非你真的想要重新组织存储库的经验,在这种情况下改变你正在做的事情:-)

但是,如果您所说的“项目”是指一个“真正的”软件项目,可以公开访问存储库,那么我认为每个项目单独的存储库是有意义的:部分原因是它可以清晰地划分事物并且每个项目独立扩展,也因为这是人们期望看到的。

在不同的存储库之间共享代码并不像您想象的那样成为问题,因为 svn 具有相当可爱的“svn:externals”特性。这使您可以将存储库的目录指向另一个存储库中的目录,并自动将这些内容与您的内容一起签出。与往常一样,请参阅 SVN 手册了解详细信息。

【讨论】:

    【解决方案2】:

    我会将它们存储在同一个存储库中。它更整洁一些。再加上为什么对持续集成很重要等等——你总是可以从存储库中提取一个特定的文件夹。

    也更容易管理 - 一个存储库的帐户,一个存储库的访问日志等。

    【讨论】:

    • 在我的 CI 设置中,我使用从存储库导出的修订号标记构建。返回并找到项目的确切状态非常容易,但这需要单独的存储库。
    【解决方案3】:

    我的经验法则是将交付的东西整合在一起。换句话说,如果您可能分别交付项目 X 和项目 Y,那么将它们放在单独的 repos 中。

    是的,有时这意味着你有一个包含大量组件的项目的巨大 repo,但是人们可以在 repo 的子树上进行操作,这迫使他们在提交更改时考虑“整个项目”回购。

    【讨论】:

      【解决方案4】:

      我绝对会将每个项目都保存在自己的存储库中,与其他所有项目分开。这将为每个项目提供自己的提交历史。一个项目的回滚不会影响其他项目。

      【讨论】:

      • 如果您将项目保存在单个存储库中的不同目录中,那么每个项目仍然会有自己的提交历史记录。
      • 回滚更改几乎可以在任何粒度级别上完成。通常没有理由在存储库级别完成它。同样可以在目录级别访问更改日志。即使每个存储库有一个项目,您也将处理目录(分支)。
      【解决方案5】:

      我个人更喜欢每个项目在它自己的存储库中

      【讨论】:

        【解决方案6】:

        如果您与很多其他人一起工作,您可能会考虑是否每个人都需要对每个项目具有相同级别的访问权限。我认为如果您将每个项目放在单独的存储库中,则为每个人授予访问权限会更容易。 ~~~

        【讨论】:

          【解决方案7】:

          如果您要为每个项目使用单独的存储库,您可以使用 External tag 来引用其他存储库 - 从而共享代码。

          【讨论】:

            【解决方案8】:

            只要每个项目都有 /trunk /tags 和 /branches 你就很好。适当的持续集成是这里的标准。

            【讨论】:

              【解决方案9】:

              是的,将所有内容都放在源代码管理中。

              如果您使用的是 SVN,请将项目保存在自己的存储库中 - svn 很慢,而且越来越慢。

              【讨论】:

              • 虽然 Subversion 可能有点慢,但我当然没有注意到它会因为个人项目可能造成的各种负载而减慢;多个存储库增加的管理开销会更烦人。
              • 我注意到 1000 多个修订确实会导致一分钟左右的处理时间,因此这取决于将有多少签入以及存储库将存在多长时间。
              【解决方案10】:

              如果您的项目是独立的,则可以将它们保存在单独的存储库中。如果它们共享组件,则将它们放在一起。

              【讨论】:

                【解决方案11】:

                对于 Subversion,我建议将所有内容放在同一个存储库中;设置新存储库的管理开销太高,无法轻而易举地做到这一点,因此您更有可能不对某些东西进行版本控制,以后会后悔。如果您需要限制对存储库的一部分的访问,Subversion 提供了大量细粒度的访问控制。

                然而,当我开始将我的项目迁移到 Mercurial 时,我已经切换到为每个项目创建一个存储库,因为它只需要一个“hg init”就可以创建一个新的,我可以使用 @987654321 @ 扩展以轻松对嵌套存储库执行操作。 Subversion 有 svn:externals,它们有点相似,但需要更多的管理开销。

                【讨论】:

                • 我正要这么说,但后来我突然想到,也许不是每个人都只使用本地存储库来存储自己的东西。如果您计划为每个存储库设置 Web 界面和访问限制等,那么这不仅仅是没有工作。虽然我认为它是可编写脚本的。
                • 是的,这就是我的意思 - 无法通过网络访问的存储库对我来说并不是非常有用,因为我每天至少在 5 台机器上工作。 (我意识到我可能是少数人)。
                猜你喜欢
                • 2019-06-13
                • 1970-01-01
                • 2021-05-12
                • 1970-01-01
                • 1970-01-01
                • 2010-09-20
                • 2012-03-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多