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

目前我正在使用TortoiseSVN来pipe理我现在正在使用的几个项目。 当我第一次将所有东西都移到源代码控制中时,我不太清楚应该如何布置所有东西,所以我最终将每个项目放到了自己的存储库中。

我想知道把它们全部放到一个大的存储库中,然后把它们拆分成项目文件夹对我来说是个好主意吗? 其他人做什么?

目前他们没有共同的代码,但他们可能在未来。 如果把它们放在一起,会不会更容易pipe理?

谢谢。

取决于“项目”的含义。

我有一个普通的本地存储库,包含我编写的东西的随机部分(包括我的网站,因为它很小)。 单用户本地SVN存储库不会遭受显着的性能问题,直到你花了很多年的打字。 到哪个时候SVN会更快。 所以我还没有后悔把所有的东西都放在一个存储库里,尽pipe其中的一些东西是完全不相干的,除了我写的东西。

如果一个“项目”是指“课堂作业”,或者“我用来驱动我的TiVo的脚本”,或者“我学习一种新语言的进展”,那么为每个项目创build一个回购对我来说似乎没有必要。 然后再次,它也不需要任何费用。 所以我想我会说不要改变你在做什么。 除非你真的想重新组织仓库的经验,在这种情况下改变你在做什么:-)

然而,如果说“项目”意味着一个“真正的”软件项目,并且公共访问存储库,那么我认为每个项目的单独回购是有意义的:部分是因为它把事情干净地分开,每个项目都独立地扩展,这是人们期望看到的。

在不同的版本库之间共享代码并不像你想像的那样是个问题,因为svn具有相当可爱的“svn:externals”特性。 这使您可以将存储库的一个目录指向另一个存储库中的一个目录,并随同您的资料一起自动检查这些内容。 一如既往,请参阅SVN书的细节。

我会将它们存储在同一个存储库中。 这是一种整洁。 另外为什么要持续集成,这样 – 你总是可以从存储库中拉出一个特定的文件夹。

pipe理也比较容易 – 对一个存储库的帐户,访问一个存储库的日志等。

我绝对会把每个项目放在自己的仓库里,与其他项目分开。 这将使每个项目都有自己的提交历史。 一个项目的回滚不会影响其他项目。

我的经验法则是巩固交付在一起的东西。 换句话说,如果您可能分别交付项目X和项目Y,则将它们分开放置。

是的,有时这意味着对于包含大量组件的项目,您有一个巨大的回购站,但是人们可以在回购的子树上进行操作,这迫使他们在对整个项目进行更改时想到“整个项目”回购。

我个人更喜欢每个项目都在自己的仓库中

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

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

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

是的,把所有东西放在源代码pipe

如果您使用的是SVN,请将项目保存在自己的存储库中 – svn很慢,而且速度会变慢。

如果你的项目是独立的,把它们放在不同的仓库里是可以的。 如果他们共享组件,然后把它们放在一起。

对于Subversion,我build议把所有东西都放在同一个仓库中。 build立一个新的存储库的pipe理开销太高,以至于无法理解,所以你更有可能不去更新版本,后悔。 如果您需要限制对部分存储库的访问,Subversion会提供大量细粒度的访问控制。

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