38

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

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

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

谢谢。

4

11 回答 11

31

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

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

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

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

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

于 2008-09-24T23:19:36.803 回答
8

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

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

于 2008-09-24T23:03:32.397 回答
7

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

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

于 2008-09-24T22:59:39.987 回答
5

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

于 2008-09-24T22:58:47.697 回答
4

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

于 2008-09-24T22:56:10.387 回答
3

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

于 2008-09-25T16:17:35.187 回答
2

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

于 2008-09-24T23:02:53.177 回答
0

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

于 2008-09-24T22:57:21.850 回答
0

是的,把所有东西都放在源代码管理中。

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

于 2008-09-24T22:58:11.020 回答
0

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

于 2008-09-24T23:00:23.713 回答
0

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

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

于 2008-09-24T23:00:25.367 回答