我应该将所有项目存储在一个或者多个存储库中吗?

时间:2020-03-06 14:41:37  来源:igfitidea点击:

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

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

目前,它们都没有共享通用代码,但将来可能会共享。如果将它们放在一起,是否会使管理起来更容易。

谢谢。

解决方案

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

只要每个项目都具有/ trunk / tags和/ branches,就可以了。适当的持续集成是这里的标准。

是的,将所有内容置于源代码管理中。

如果我们使用的是SVN,则将项目保留在自己的存储库中svn会变慢,并且会变慢。

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

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

对于Subversion,我建议将所有内容都放在同一存储库中。设置新存储库的管理费用太高了,以至于不费吹灰之力,因此我们更有可能不对某些版本进行版本管理,以后再后悔。如果我们需要限制对存储库一部分的访问,则Subversion提供了大量细粒度的访问控制。

但是,当我开始将项目迁移到Mercurial时,我已经切换到为每个项目创建一个存储库,因为它只需要一个" hg init"就可以创建一个新的存储库,并且我可以使用hg forest扩展轻松在嵌套存储库上执行操作。 Subversion具有svn:externals,它们有些相似,但是需要更多的管理开销。

如果要为每个项目使用单独的存储库,则可以使用外部标记来引用其他存储库,从而共享代码。

我会将它们存储在同一存储库中。有点整洁。再加上为什么对持续集成如此重要,因此我们始终可以从存储库中提取特定文件夹。

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

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

我有一个通用的本地存储库,其中包含我所写的随机内容(包括我的网站,因为它很小)。除非我们花了很多年的时间输入,否则单用户本地SVN存储库不会出现明显的性能问题。到那个时候SVN会变得更快。因此,即使将其中的某些内容与我编写的内容完全无关,我也没有后悔将所有内容都放入一个存储库中。

如果"项目"的意思是"课堂授课","我用来驱动TiVo的脚本"或者"我学习新语言的进度",那么对我来说,为每个项目创建一个回购协议似乎有点不必要。再说一次,它也不花任何钱。所以我想我说不要改变你在做什么。除非我们真的想要重新组织存储库的经验,否则在这种情况下,请务必更改工作:-)

但是,如果用"项目"来表示一个"真实的"软件项目,并且可以对存储库进行公共访问,那么我认为每个项目都有一个单独的存储库是有意义的:部分原因是因为它可以清晰地划分内容,并且每个项目都可以独立扩展,而且还因为这是人们期望看到的。

在单独的存储库之间共享代码比我们想象的要少,因为svn具有相当可爱的" svn:externals"功能。这样,我们就可以将存储库的目录指向另一个存储库中的目录,并与存储库一起自动检查该存储库。与往常一样,请参阅SVN书以获取详细信息。

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