我应该将所有项目存储在一个存储库中还是多个?

时间:2008-09-24 22:54:36

标签: svn version-control tortoisesvn repository

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

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

目前,他们都没有共享共同的代码,但他们可能会在将来共享。如果它们在一起的话,它会更容易管理。

感谢。

11 个答案:

答案 0 :(得分:31)

在某种程度上取决于“项目”的含义。

我有一个通用的本地存储库,其中包含我写的随机内容(包括我的网站,因为它很小)。单个用户本地SVN存储库在您花费很多年打字之前不会遇到明显的性能问题。到那时SVN会更快。所以我还没有后悔把所有东西扔进一个存储库,尽管其中的一些东西完全不相关,除了我写的全部。

如果“项目”意味着“来自班级的任务”,或“我用来驱动我的TiVo的脚本”,或“我学习新语言的进步”,那么每个项目创建一个回购似乎有点不必要我。然后,它也没有任何成本。所以我想我会说不要改变你正在做的事情。除非您真的想要重新组织存储库的经验,否则会改变您正在做的事情: - )

然而,如果通过“项目”你的意思是一个“真正的”软件项目,公共访问存储库,那么我认为每个项目的单独回购是有意义的:部分是因为它干净地划分事物,每个项目独立扩展,但也因为这是人们期望看到的。

在不同的存储库之间共享代码比你想象的要少,因为svn具有相当可爱的“svn:externals”功能。这使您可以将存储库的目录指向另一个存储库中的目录,并自动检查这些内容以及您的内容。有关详细信息,请参阅SVN一书。

答案 1 :(得分:8)

我会将它们存储在同一个存储库中。它有点整洁。另外,为什么持续集成会很重要 - 您可以随时从存储库中提取特定文件夹。

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

答案 2 :(得分:6)

我的经验法则是巩固一起交付的东西。换句话说,如果您可以单独交付项目X和项目Y,则将它们放在单独的回购中。

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

答案 3 :(得分:5)

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

答案 4 :(得分:4)

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

答案 5 :(得分:3)

如果您与很多其他人合作,您可能会考虑每个人是否都需要对每个项目进行相同级别的访问。我认为如果将每个项目放在一个单独的存储库中,那么为每个人提供访问权限会更容易。 ~~~

答案 6 :(得分:2)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

如果您正在使用SVN,请将项目保存在自己的存储库中 - svn速度慢,速度慢。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

对于Subversion,我建议将所有内容放在同一个存储库中;设置新存储库的管理开销太高,无法让它变得简单,因此您更有可能不会对某些内容进行版本控制并在以后后悔。如果您需要限制对存储库的一部分的访问,Subversion提供了大量细粒度的访问控制。

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